ConverterTest
クラスにアクセスする必要があるクラスがありますValidateTest
。抽象クラスでValidateTest
あるため、コンストラクターを使用して渡すことはできません。ConverterTest
バインドする 2 番目のコンストラクターを導入するValidateTest
と、派生クラスで多くの問題が発生し、多くのことを変更する必要があります。ValidateTest
そのためConverterTest
、プロパティ注入 (inject 属性で装飾) を使用して渡そうとしConverterTest
ましたが、Ninject によって作成されず、inject プロパティが無視されるため、これも機能しません。そのため、インスタンス プロパティを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
}
}