2011-04-13 21 views
9

Bir kullanıcı oluşturdukları isteyen eklentinin türünü (temelde bu bir eklenti örneği için bir yapılandırma kurar) seçmenize olanak tanıyan bir eklenti sistemi var.almak StructureMap kayıtlı tipleri, değil örneklerini

Seçme listesinden eklenti türünü seçerler. Ben MVC denetleyicisine IEnumerable enjekte etmek için StructureMap kullanıyorum, böylece seçim listesinde kullanmak için FQ türü adına erişebilir.

Bu iyi çalışır ama gerçekten istemiyorum ben sadece bir seçim listesinde bunların listesini görüntülemek için tüm kayıtlı eklentileri bir örneğini oluşturmak zorunda olduğunu gibi.

Soru şu ki, StructureMap ile kayıtlı olan IPlugin türlerine erişebilir miyim?

cevap

13

Sen kabın Model özelliğini kullanarak örnek bilgi almak mümkün olmalıdır:

IContainer container = ObjectFactory.Container; 
IEnumerable<InstanceRef> instances = container.Model.AllInstances. 
    Where(i => i.PluginType.Equals(typeof(IPlugin))); 

kullanarak Beton türü erişebilirsiniz:

foreach(var instanceRef in instances) 
    Console.WriteLine(instanceRef.ConcreteType); 
+0

tutturuyordum. Teşekkürler. –

İlgili konular