turkoglu98 Posted April 26, 2019 Share Posted April 26, 2019 Arkadaşlar merhaba, C# hakkında fazla bir bilgim yok ve aklımda şöyle bir soru var. C# daki bir projem için güvenlik class ı yazmak istiyorum ama çağırma olmayacak otomatik olacak. Yani ben inputta veri çekerken bir daha güvenlik fonksiyonuna gönderip ordan bir geri dönüş almayacağım. Bunun aynısını ben php de yapabiliyorum o dosyaya gelen tüm POST ve GET leri kontrol edip koda devam ettirtebiliyorum, sonra posttan bir veri çektiğimde o verinin daha önceden güvenlik kontrolünden geçtiğini bildiğim için başka bir şey yapmadan değişkene atayabiliyorum. Bunun aynısını da C# da textbox.Text i extend etme olarak düşündüm. Yani projedeki tüm inputlardan veri çekerken önce kontroller yapılacak sonra veri gelecek. Yine kodu yazarken textbox1.Text özelliğini rahatlıkla kullanabileceğim çünkü önceden kontrolü yapılmış olacak. İnternette bayağı araştırdım ama düzgün birşey bulamadım. En yakın olarak özelleştirilmiş textbox yapın diyorlar yani textbox sınıfını alıp yeni bir sınıf oluşturun onu kullanın diyorlar Bunun fonksiyon oluşturmadan farkı yok . Bu son çare çünkü bu sefer güvenlik sınıfımı başka bir projeye eklediğimde oradaki tüm text işlemlerini benim yazdığım şekilde değiştirmem gerekiyor. Umarın derdimi anlatabilmişimdir. System.Windows.Forms.TextBox sınıfındaki "Text" fonksiyonunu extend etmenin bir yolu var mıdır? Veya dediğim gibi güvenlik sınıfımı eklediğimde kodda değişiklik yapma gereği duymayacağım bir yöntem var mıdır? Quote Link to comment Share on other sites More sharing options...
Bitmap Posted April 27, 2019 Share Posted April 27, 2019 (edited) Merhaba, İlk olarak C#'ta propert'leri override etmeni önermem. Ama bunun yerine event'ları override edebilirsin. input'a girildiğinde varolan değerini al, değiştiğinde validate et, eğer uymuyorsa eskiye döndür, uyuyorsa devam et. Aşağıdaki gibi bir kod parçası ile çözebilirsin. Denemedim ama hemen hemen böyleydi. private string _previous; protected override void OnGotFocus(EventArgs e) { _previous = base.Text; } protected override void OnTextChanged(EventArgs e) { if(!validation()){ /// eski değere dön base.Text = _previous; } else{ /// eski değeri set et base.OnTextChanged(e); /// optional: eski değer şimdiki değer yap. _previous = base.Text; } } Bana kalsa databinding ile yapıp, model property'lerini input'lara bind ederdim. MVVM style.. İkinci olarak PHP'deki düşünce tarzını C#'ta uygulamaya çalışırsan çok zorlanırsın, hele ki Desktop app'e uygulamaya çalışırsan 2 kat daha çok zorlanırsın. Edited April 27, 2019 by Bitmap 2 Quote Link to comment Share on other sites More sharing options...
turkoglu98 Posted April 28, 2019 Author Share Posted April 28, 2019 Çok teşekkür ederim, tam aradığım şeydi. OnTextChanged ile de yapabileceğim aklıma gelmedi hiç Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.