Я думаю, вам нужно указать, какой тип используется для определения псевдонима.Я сделал пример для Как внедрить общий IList <> объектов с помощью XML-конфигурации Unity 2? , как показано ниже.
Список Предположим, вы хотите использовать разрешение из "IList"к списку".
1 Сначала вам необходимо подготовить файл конфигурации, в этом случае он использует подписанные ссылки на IList, а также List.
<?xml version="1.0" encoding="utf-8" ?>
<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">
<alias alias="StringListContract" type="System.Collections.Generic.IList`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<alias alias="ConcreteStringList" type="System.Collections.Generic.List`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<container>
<register type="StringListContract" mapTo="ConcreteStringList">
<lifetime type="ContainerControlledLifetimeManager" />
<constructor />
</register>
</container>
</unity>
</configuration>
2 Используйте контейнер для разрешения зависимости; -)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
namespace UnityTerminal
{
class Program
{
static void Main(string[] args)
{
var container = new UnityContainer();
container.LoadConfiguration();
{
var concreteStringList = container.Resolve<System.Collections.Generic.IList<System.String>>();
concreteStringList.Add("Hello World");
}
{
var concreteStringList = container.Resolve<System.Collections.Generic.IList<System.String>>();
Console.WriteLine("{0}", concreteStringList[0]);
}
Console.ReadKey();
}
}
}
Этого должно быть достаточно, надеюсь, это сработает ;-) С уважением, Гербер