0
首先,讓我提供一些示例代碼:解決依賴
public abstract class BaseEntity { }
public class MyEntity : BaseEntity { }
public class MyCustomEntity : BaseEntity { }
public interface IStore<TEntity> where TEntity : BaseEntity { }
public class BaseStore<TEntity> : IStore<TEntity> where TEntity : BaseEntity { }
public class MyCustomEntityStore : BaseStore<MyEntity> { }
所以基本上我有一個抽象的實體和兩個派生類型。我創建了一個隱藏BaseEntity所有基本內容的存儲庫類(例如填充「LastModifiedBy」屬性)。但對於某些情況,我需要特定的行爲來保存一個實體,所以我需要從BaseStore
派生出來,並在MyCustomEntityStore
中實現自定義行爲。到目前爲止,這很容易。
問題是我想使用Autofac來解決我的應用程序中的依賴關係。我的目標是要做到這一點:
public class SomeClass {
private readonly IStore<MyEntity> MyEntityStore;
private readonly IStore<MyCustomEntity> MyCustomEntityStore;
public SomeClass(IStore<MyEntity> mes, IStore<MyCustomEntity> mces)
{
MyEntityStore = mes;
MyCustomEntityStore = mces;
}
}
我想注入的BaseStore<MyEntity>
一個實例IStore<MyEntity>
和MyCustomEntityStore
到IStore<MyCustomEntity>
。這與MyCustomEntityStore
(其具有從基本商店派生的具體實現)工作正常,但我不想創建空的類只是爲了繼承BaseStore<MyEntity>
。我註冊了我的部件是這樣的:
builder.RegisterAssemblyTypes(Assembly.Load("Project.Data")).Where(t => t.Name.EndsWith("Store")).AsImplementedInterfaces().InstancePerRequest();
雖然這些實例可以在這些接口的地方,Autofac無法解決IStore<MyEntity>
。
感謝您的幫助!