我正在使用.net Core 2.0。
我有一个 MemberInfo 类,它将继承 Member Abstract 类。需要解决 StartUp.cs 文件中的依赖关系。
public class MemberInfo : Member
{
public MemberInfo()
{
}
}
public abstract class Member: IMemberDetails
{
public DateTime currentDate = DateTime.Now;;
}
在 startup.cs 文件中
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddScoped<IMemberDetails, Member>();
services.AddScoped<Member, MemberInfo >();
}
我收到异常消息
InvalidOperationException: Unable to resolve service for type 'MemberIfo' while attempting to activate 'ProcessData'
.
最佳答案
您的 ProcessData-Class 找不到 MemberInfo,因为您添加了 MemberInfo 作为 Member-class 的表示。如果你想直接访问类型 MemberInfo 你需要做 services.AddScoped<MemberInfo, MemberInfo >();
或更短 services.AddScoped<MemberInfo>();
.
如果您只需要抽象定义,您应该请求抽象类 Member
,而不是具体实现MemberInfo
在您的 ProcessData 类中。为了更清楚地区分定义和实现,您可能需要添加一个接口(interface),正如 this answer 中指出的那样。 .
如果你想让两种类型都指向同一个实现,但又不想在同一个范围内有多个实例,你可以这样做:
services.AddScoped<MemberInfo>();
services.AddScoped<Member>((serviceProvider) => serviceProvider.GetRequiredService<MemberInfo>());
关于c# - 解决 .Net core 2.0 中抽象类的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57199118/