Böyle bir soyut dersim var;Geçerli tür statik, genel bir yöntemde mi geliyor?
public abstract PropertyBase
{
public static System.Type GetMyType()
{
return !!!SOME MAGIC HERE!!!
}
}
ben alt sınıf istiyorum, ben statik GetMyType() çağırdığınızda, ben alt sınıfın tipini iade etmek istiyorum. Yani bir alt tipi bildirirsem; Ben
var typeName = ConcreteProperty.GetMyType().Name;
ben ayarlanması gerekir 'typeName' bekliyoruz diyoruz sonra
public class ConcreteProperty: PropertyBase {}
"ConcreteProperty." Bunu yapmanın bir yolu olmadığını sanıyorum, ama dışarıda birileri bu bilgiyi elde etmenin bir yolunu biliyorsa ilgileniyorum.
(I çözmeye çalışıyorum problem WPF bağımlılık özelliklerinin ayrıntı olduğu;
class NamedObject : DependencyObject
{
// declare a name property as a type, not an instance.
private class NameProperty : PropertyBase<string, NamedObject> { }
// call static methods on the class to read the property
public string Name
{
get { return NameProperty.Get(this); }
set { NameProperty.Set(this, value); }
}
}
Ve neredeyse bir var; böyle bir şey yapabilmek isterdim uygulanması, ama oldukça benim NameProperty sınıfının dışında ihtiyaç bilgileri alınamaz)
Statik olmasının nedeni nedir? Sanal ya da soyut olarak bildirilen sorun olurdu –
NEDEN STATİK: Bu garip bir açı ve bir C# gerçekten tasarlanmamıştır. Bazen türünüz sadece bir değere sahip olabilir. Yani 'sınıf Steve: Person {}' bir tür bildirir, ancak yalnızca bir olası değer olduğundan, 'Steve' sınıfı da bir örneği tanımlar. 'Steve' türünü ilan etmek singleton 'Steve'i ilan ediyor. WPF DP'ler şöyle; örnek veri, meta veri veya tür olup olmadıklarına karar veremezler. Hepsini bir kod yapısına katlamaya çalışıyorum. Hepsi spekülatif bir ATM, ama ben kendi iyiliği için onu takip etmekle ilgileniyorum. –
İşte bu yüzden buna ihtiyacım var: Boilerplate TypeDescriptor kodu için kısmi bir sınıf oluşturma. Dinamik olarak oluşturulan özellik adları, türünde tanımlanmış özelliklerle çakışamaz. Bu nedenle, bir kontrol için türdeki özellik adlarının bir listesine ihtiyacım var. Bu daha fazla kodlu koddur ve bu nedenle kodgen içinde gider. Ayrıca değişmediği için statik için mükemmel bir adaydır.Bu yüzden, statik yapıcıda geçerli türün özelliklerini içeren bir liste oluşturmam gerekiyor. Şey, cehennem, şimdi T4 şablonunda sihirli ipleri kullanmam gerek. – Will