我有ConverterTest
需要访问课程的ValidateTest
课程。我不能ValidateTest
使用构造函数传递,因为ConverterTest
它是抽象类。如果我引入第二个构造函数来绑定ValidateTest
,我会在派生类中遇到很多问题,很多事情都需要改变。所以我试图传递ValidateTest
给ConverterTest
使用属性注入(用注入属性装饰),但这也不起作用,因为ConverterTest
不是由 Ninject 创建的,并且注入属性被忽略。所以我决定直接在ValidateTest
类中创建实例属性并绑定自身的实例。ValidateTest
要在课堂上获取实例,ConverterTest
我使用kernel.Get<ValidateTest>().Instance
. kernel.Get
一切正常,但使用访问实例类是个好主意吗?还有其他解决方案吗?
public class ValidateTest
{
private readonly ISettingsRepository _settingsRepository;
[Inject]
public ValidateTest Instance { get; set; }
public ValidateTest(ISettingsRepository settingsRepository)
{
_settingsRepository = settingsRepository;
}
}
捆绑
kernel.Bind<ISettingsRepository>().To<SettingsRepository>();
kernel.Bind<ValidateAbuse>().ToSelf().InSingletonScope();
在无法绑定构造函数且属性绑定不起作用的抽象类中获取使用实例ValidateTest
。kernel.Get
public abstract class ConverterTest
{
public void Execute()
{
NinjectHelper.kernel.Get<ValidateTest>().Instance
}
}