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>
。
感谢您的帮助!