C# Ninject依赖项注入-两个具体类
我正在学习用于依赖注入的Ninject,并有一个用例,其中两个类在WPF MVVM应用程序中实现相同的接口。在我的研究中,可以使用上下文绑定来绑定依赖项,但是我不确定在这种情况下如何工作 例如:C# Ninject依赖项注入-两个具体类,c#,wpf,dependency-injection,ninject,C#,Wpf,Dependency Injection,Ninject,我正在学习用于依赖注入的Ninject,并有一个用例,其中两个类在WPF MVVM应用程序中实现相同的接口。在我的研究中,可以使用上下文绑定来绑定依赖项,但是我不确定在这种情况下如何工作 例如: public interface IModifyContent { string ModifyOperation(); } public class UpdateContent : IModifyContent { public string ModifyOperation() {
public interface IModifyContent {
string ModifyOperation();
}
public class UpdateContent : IModifyContent {
public string ModifyOperation() {
return "This is the update operation";
}
}
public class DeleteContent : IModifyContent {
public string ModifyOperation() {
return "This is the delete operation";
}
}
public class ModifyFile {
private IFileManager _fileManager;
private IModifyContent _modifyContent;
public ModifyFile(IFileManager fileManager, IModifyContent modifyContent)
{
_fileManager = _fileManager;
_modifyContent = modifyContent;
}
public void Modify()
{
var fileContent = _fileManager.ReadFileContents(); // Returns file content
var result = _modifyContent.ModifyOperation(); // ModifyOperation would actually modify content in some way...
// Do stuff with result
}
}
然后绑定看起来像这样:
Bind<IModifyContent>().To<UpdateContent>();
Bind<IModifyContent>().To<DeleteContent>();
// Other bindings
Bind().To();
绑定()到();
//其他绑定
在这方面,我的想法如下:
- ModifyFile类用于修改文件时的通用功能,而IModifyContent的两个具体实现定义了不同操作可能出现的唯一行为
- 根据调用/调用ModifyFile的内容,我希望传入IModifyContent的不同具体实现。即,当从更新业务逻辑或视图模型调用时,应将具体的UpdateContent作为依赖项传递给ModifyFile
首先,这是一种避免重复公共逻辑的良好设计方法,其次,我如何根据调用ModifyFile的类注入正确的具体实现?我认为如果您的两个具体类来自不同的业务流, 您可以将它们注册为具体类,而不是抽象类 我是说你可以注册
Bind<UpdateContent>().To<UpdateContent>();
Bind<DeleteContent>().To<DeleteContent>();
Bind().To();
绑定()到();
在BusinessLogic类中,您可以要求具体的类
TLDR:两个类都有接口,这并不意味着你必须从那里使用它们。你可能需要检查这两个类是否应该实现相同的接口。你可能违反了法律。