Исключение C # Generics, использующее Generics на интерфейсе, терпящем неудачу в Autofac.ContainerBuilder.Build () - PullRequest
1 голос
/ 24 мая 2011

Мне кажется, что все регистрации интерфейса определены правильно, но я получаю исключение при вызове

container = builder.Build();

Исключение:

'Common.RpcServer`2 [Logic.Engine, Messages.Serializer] '

нельзя назначить для службы

' Common.IRpcServer`2 [[

Services.IEngine, Contracts, Version = 1.0.0.0, Культура= нейтральный, PublicKeyToken = null], [Messages.ISerializer, Contracts, версия = 1.0.0.0, культура = нейтральный, PublicKeyToken = null]] '.

У меня очень простой регистрационный код для IEngine и ISerializer (одна и ни одна зависимость соответственно).

RpcServer немного сложнее, но все его зависимости выглядят нормально.

builder.Register(c => 
    new RpcServer<Engine, Serializer>(
        c.Resolve<ISubscription>(),
        c.Resolve<IService>() as Engine,
        c.Resolve<ISerializer>() as Serializer)
    ).As<IRpcServer<IService, ISerializer>>();

Должен ли я быть обеспокоен перечислением версий в исключении или вложением квадратных скобок?

RpcServer`2 [Logic.Engine, Messages.Serializer]

против

IRpcServer`2 [[Services.IEngine], [Messages.ISerializer]]

Что-нибудь еще, что я должен искать, чтобы диагностировать это?

1 Ответ

0 голосов
/ 25 мая 2011

Проголосовал за закрытие как "слишком локализованный".

Но если вы обнаружите этот вопрос в попытке решить свою проблему, я рекомендую проверить тройную проверку всехваши интерфейсы и убедитесь, что они поддерживают ковариацию .

Спасибо Тиму Роджерсу за упоминание об этом, один интерфейс проскользнул, наряду с другой очень локализованной проблемой в моей кодовой базе.

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...