Bir sınıf yansıtmak için Type.GetType(string) kullanabilirsiniz. Type
, bu tür için kullanılabilen bir yöntem de dahil olmak üzere diğer üyeleri keşfetmek için yöntemleri vardır.
Ancak, bir numara, GetType
, derleme niteliğinde bir ad istiyor. Eğer sadece sınıf ismini kullanırsanız, geçerli montaja başvurduğunuzu varsayacaktır. Tabii
var type = (from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.Name == className
select type);
, neredesiniz bundan daha fazla olabilir: Tüm yüklü meclislerinde türünü bulmak istiyorsa
Yani, böyle bir şey (LINQ kullanarak) yapabilirsiniz Henüz yüklenemeyen başvurulan derlemeler üzerinde yansıtmak istiyorum, vb.
İsim alanlarını belirlerken, yansıma bunları açıkça dışa aktarmıyor. Bunun yerine, böyle bir şey yapmak olurdu:
var type = (from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.Name == className && type.GetMethods().Any(m => m.Name == methodName)
select type).FirstOrDefault();
if (type == null) throw new InvalidOperationException("Valid type not found.");
object instance = Activator.CreateInstance(type);
bir cevap olarak en uygun yanıtı işaretlemek unutmayın. –