Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: mir_as82 - 25 Şubat 2020, 17:24:52

Başlık: Object içindeki veya object içindeki object içindeki property yi setlemek?
Gönderen: mir_as82 - 25 Şubat 2020, 17:24:52
Merhaba,
Elimde Object türünden bir nesne(myObject)var.
Bu nesne iç içe nesnelerden de oluşabilir. Amacım "Password" isminde string türden propertyyi bulup "*" olarak setlemek.
Bunu nasıl yapabilirim?
Aşağıdaki gibi bir method olacak.
SetProperty(myObject, "Password", "*")
Başlık: Ynt: Object içindeki veya object içindeki object içindeki property yi setlemek?
Gönderen: bocek - 25 Şubat 2020, 20:20:36
Interface ile yapabilirsiniz:
interface IPassword // isim önemli değil
{
    string Password{ get;set; }
}

class MyObject:IPassword // sınıfımıza interface'imizi ekliyoruz.
{
    public string Password{ get;set; } // IPassword'dakinin aynısı olmak zorunda. yoksa zaten hata verir.
}

bu tanımlamaları yaptıktan sonra:
MyObject myObject = new MyObject(); // bir yerlerde bu yapılıyordur..
IPassword ipass = myObject as IPassword; // property'sini değiştireceğimiz objeyi interface'e geçiyoruz
ipass.Password = "*";
Başlık: Ynt: Object içindeki veya object içindeki object içindeki property yi setlemek?
Gönderen: mir_as82 - 26 Şubat 2020, 10:17:28
Aslında bu işlemin runtime da yapılması gerekiyor.
Benim objelerin içinde property isimlerini arayıp, property name alanları Password olanların değeri * yapılacak
Başlık: Ynt: Object içindeki veya object içindeki object içindeki property yi setlemek?
Gönderen: mufitsozen - 26 Şubat 2020, 10:32:14
Alıntı yapılan: mir_as82 - 26 Şubat 2020, 10:17:28Aslında bu işlemin runtime da yapılması gerekiyor.
Benim objelerin içinde property isimlerini arayıp, property name alanları Password olanların değeri * yapılacak

JVM isleyisi ile ilgili detayli bilgi sahibi olmaniz gerekir bunun icin. Yapmaniz gereken sey cok basit degil. Tecrube kazanmak ve sorulariniza cevap bulmak icin "Java Serialization and Deserialization" bahsine ve oradaki orneklere bakabilirsiniz.
Başlık: Ynt: Object içindeki veya object içindeki object içindeki property yi setlemek?
Gönderen: bocek - 26 Şubat 2020, 10:36:30
o zaman:
public void SetProperty(MyObject object, string propertyName, string newValue)
{
  var property = object.GetType().GetProperty(propertyName);
  property?.SetValue(object, newValue,null);
}

ya da yine interface ile yapmak istersek:
public void SetProperty(MyObject object,  string newValue)
{
  IPassword ipass = object as IPassword;
  ipass?.Password = newValue;
}