C# 使用Autofac解析继承类的依赖项
首先,让我提供一些示例代码:C# 使用Autofac解析继承类的依赖项,c#,dependency-injection,autofac,C#,Dependency Injection,Autofac,首先,让我提供一些示例代码: public abstract class BaseEntity { } public class MyEntity : BaseEntity { } public class MyCustomEntity : BaseEntity { } public interface IStore<TEntity> where TEntity : BaseEntity { } public class BaseStore<TEntity> : ISt
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> { }
我想将BaseStore
的实例注入IStore
和MyCustomEntityStore
注入IStore
。这在MyCustomEntityStore
(它有一个从基存储派生的具体实现)中运行良好,但我不想创建空类只是为了继承BaseStore
。我注册了如下组件:
builder.RegisterAssemblyTypes(Assembly.Load("Project.Data")).Where(t => t.Name.EndsWith("Store")).AsImplementedInterfaces().InstancePerRequest();
虽然这些实例可以代替这些接口,但Autofac无法解析ISTOR
谢谢你的帮助 我设法解决了这个注册问题:
builder.RegisterGeneric(typeof(BaseStore<>))
.As(typeof(IStore<>))
.InstancePerRequest();
builder.RegisterAssemblyTypes(Assembly.Load("Project.Data"))
.Where(t => t.Name.EndsWith("Store"))
.AsImplementedInterfaces()
.InstancePerRequest();
builder.RegisterGeneric(typeof(BaseStore))
.As(类型(历史记录))
.InstancePerRequest();
builder.RegisterAssemblyTypes(Assembly.Load(“Project.Data”))
.Where(t=>t.Name.EndsWith(“存储”))
.AsImplementedInterfaces()
.InstancePerRequest();
有人能证实这是正确的方法吗
builder.RegisterGeneric(typeof(BaseStore<>))
.As(typeof(IStore<>))
.InstancePerRequest();
builder.RegisterAssemblyTypes(Assembly.Load("Project.Data"))
.Where(t => t.Name.EndsWith("Store"))
.AsImplementedInterfaces()
.InstancePerRequest();