Я пытаюсь зарегистрировать общий тип в файле конфигурации для Unity 2.0, но, похоже, не может быть прав. Я имею в виду документацию MS здесь: http://msdn.microsoft.com/en-us/library/ff660933%28v=PandP.20%29.aspx#_Generic_Types
Код выглядит следующим образом:
public interface IRepository<T> where T : class
{
    ...
}
public class GenericRepository<T> : IRepository<T> where T : class
{
    ...
}
public class BlogRepository : GenericRepository<BlogRepository>
{
    ...
}
Конфигурация XML в настоящий момент выполняется следующим образом:
<unity>
    <!-- Aliases -->
    <alias alias="BlogIRepository" 
           type="X.Services.Interfaces.IRepository[[X.Domain.Entities.Blog, X.Domain]], X.Services"/>
    <alias alias="BlogRepository" 
           type="X.Repositories.BlogRepository, X.Repositories"/>
    <!-- Type registration -->
    <container name="development">
        <!-- Common connection string value -->
        <instance name="Conn" type="System.String" value="blahblahblah"/>
        <register type="BlogIRepository" mapTo="BlogRepository">
            <constructor>
                <param name="connectionString" type="System.String" dependencyName="Conn"/>
            </constructor>
        </register>
    </container>
</unity>
В соответствии с документацией для регистрации общих типов вы используете квадратные скобки вокруг родовых типов (типов), и если тип не является типом системы, вы предоставляете полностью квалифицированный тип внутри большего квадратного скобки. Это то, что я сделал, я думаю. Тем не менее - без труда.
EDIT: пример с сайта MSDN:
<register type="IDictionary[string, [MyApp.Interfaces.ILogger, MyApp]]"/>
Созданная ошибка:
Невозможно разрешить имя типа или псевдоним IRepository. Проверьте конфигурационный файл и проверьте его имя.
