2016-06-11 3 views
2

Я хотел бы знать, как мы можем ввести список всех дочерних объектов абстрактного класса в конструктор с помощью xml config.C# Unity контейнер конструктор инъекции списка <childs>

т.д .:

Class Test 
{ 
public Test(List<A> instances) // So this list should have instance of B & C 
{ 

} 
} 

abstract Class A 
{ 

} 

Class B: A 
{ 

} 

Class C: A 
{ 

} 

Спасибо !!!

+0

Вы имеете в виду B и C inherit A? –

+0

упс !!! исправленный. Благодарю. – Deepak

ответ

1

Вы можете использовать следующие конфигурации, если вы измените тип Test «s аргумент конструктора на IList<A>:

<configuration> 
    <configSections> 
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> 
    </configSections> 
    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <namespace name="System.Collections.Generic" /> 
    <namespace name="ConsoleApplication1" /> 
    <assembly name="ConsoleApplication1" /> 
    <container> 
     <register type="A" mapTo="B" name="B" /> 
     <register type="A" mapTo="C" name="C" /> 
     <register type="IList`1[[A]]" mapTo="A[]" /> 
    </container> 
    </unity> 
</configuration> 

Так хитрость заключается в том, чтобы отобразить IList<A> интерфейс на A[] - см this question для деталей.

+0

Спасибо Стоп-крану. Как мне разрешить это сейчас, чтобы конструктор теста получал список с B & C в нем? – Deepak

+0

Я могу решить его сейчас, и он передается правильно, как List с экземпляром B & C. Спасибо стоп-крану. – Deepak