Bu özelliğe verilen bir değere göre özel bir nitelikle etiketlenmiş bir sınıf bulmak mümkün mü?Belirli bir özellik değeri içeren bir özelliğe sahip tüm sınıfları bul
[MyAttr("CODE")]
public class MyClass() {}
Oradan alıyorum bütün sınıfları (Türleri) - -
var c = Assembly.GetExecutingAssembly().GetTypes().Where
(
t => t.IsClass &&
t.Namespace == (typeof(AbstractParentClass)).Namespace &&
t.IsSubclassOf(typeof(AbstractParentClass))
);
tüm görünür Bu çalışmaya
Temelde, şuna benzer sınıfları var. c
, tüm uygun sınıfları içerir. Şimdi, MyAttr
özniteliğine ve "CODE" değerine sahip olan c
sınıfını almam gerekiyor. Değer, Id
adlı MyAttr üzerindeki bir özellik aracılığıyla kullanılabilir.
var message = from m in c
from a in m.GetCustomAttributes(typeof(MyAttr), false)
where ((MyAttr)a).Id == "CODE"
select m;
hile yapmadım -
Bu
benim girişimiydi. Öyleyse, asıl soru, eğer bu mümkün ise ve eğer uygunsa, uygun sınıfı elde etmek için neyin değişmesi gerekiyorsa (ve onu örneklendirirse).
Sizin kodunuz çalışmalıdır. Aradığınız türden c'nin bulunduğundan emin misiniz? – SLaks
SLaks doğru ve kod çalışmalıdır. Assembly.GetExecutingAssembly() her zaman beklediğiniz derleme dönüyorsa merak ediyorum? –
'Assembly.GetExecutingAssembly()' türünü 'typeof (AbstractParentClass) .Assembly' ile değiştirmeyi deneyin. – SLaks