Bu, muhtemelen başka yerler için de geçerlidir, ancak WinForms'de, bağlayıcı kullandığımda, özellik adını vermek için birçok yöntem bulmak istiyorum. gibi bir şey:C# ciltleme işlemini statik olarak yapmanın bir yolu var mı?
class Person
{
public String Name { get { ... } set { ... } }
public int Age { get { ... } set { ... } }
}
class PersonView
{
void Bind(Person p)
{
nameControl.Bind(p,"Name");
ageControl.Bind(p,"Age");
}
}
Bununla zorunda tutun büyük bir sorun "Ad" ve "Yaş" dizeleri olarak belirtilmiş olmasıdır. Bu, kişinin Kişinin özelliklerinden birini yeniden adlandırması durumunda derleyicinin yardımı olmadığı anlamına gelir. Kod iyi bir şekilde derlenecek, ancak bağlamalar bozulacak.
Bunu özlemiş olmanın standart bir yolu var mı? Bazı tip anahtar kelimelere ihtiyacım var gibi geliyor, varolan typeof ile eşleştirmek için stringof denir. Kendini o kadar ayrıştırmak böylece yolu veya dize tam yolunu, bir kısmını almak için özelliklere sahip bazı sınıf geri dönebilirler
ageControl.Bind(p,stringof(p.Age).Name);
stringof: Bunu gibi bir şey kullanabilirsiniz.
Böyle bir şey zaten yapılabilir mi? Sen, (ya da bir şey bulamazsa için aynı isim bulmak için olduğunu düşünüyorum bu ismi kullanmayı tercih ediyorum döngüsel bir başvuru olacağını ismini ;-)
Elbette bu bulmak için yansıma kullanabilirsiniz
Bu o kadar dinamik bağlar C# bu, değil Örneğin, mevcut projelerin birinde böyle bağlamaları kurmak WinForms. –
Doğru. WinForms kullanmıyor olsanız bile bu tür bir dil özelliği kullanışlı olabilir. –