我正在使用UnityContainer,並且我想註冊一個不是帶有類型的接口,而是另一個接口。 不幸的是,我無法清楚地做到這一點..RegisterType與UnityContainer中的接口
我有幾個常用接口,這是在一個界面統一,我需要在容器中註冊。該代碼是這樣的:
interface IDeviceImporter {
void ImportFromDevice();
}
interface IFileImporter {
void ImportFromFile();
}
interface IImporter : IDeviceImporter, IFileImporter {
}
class Importer1: IImporter {
}
class Importer2: IImporter {
}
當進入圖書館,我知道要使用的進口國,因此代碼如下:
var container = new UnityContainer();
if (useFirstImport) {
container.RegisterType<IImporter, Importer1>();
} else {
container.RegisterType<IImporter, Importer2>();
}
,然後我想註冊IDeviceImporter這個特定的類和IFileImporter也。我需要這樣的東西:
container.RegisterType<IDeviceImporter, IImporter>();
但與代碼我得到一個錯誤:IImporter is an interface and cannot be constructed
。
我可以在條件內做到這一點,但它會複製粘貼。我能做
container.RegisterInstance<IDeviceImporter>(container.Resolve<IImporter>());
但它確實很髒。 任何人請,建議我的東西:)