c# - 当有字段时我应该如何使用依赖注入,而不仅仅是方法
问题描述
我试图理解依赖注入器,当我注入的接口只有方法时,这在我看来是有意义的。但是,当我有需要具有特定值的字段时,我该怎么办?
我知道在创建类的实例后,我可以像下面那样分配值,但这是正确的方法吗?
interface IItem
{
double Price { get; set; }
string Name { get; set; }
double Calories { get; set; }
double Fats { get; set; }
double Proteins { get; set; }
double Sugars { get; set; }
double Salt { get; set; }
}
class Item : IItem
{
public double Price { get; set; }
public double Calories { get; set; }
public double Fats { get; set; }
public double Proteins { get; set; }
public double Sugars { get; set; }
public double Salt { get; set; }
public string Name { get; set; }
}
class SomeClass
{
public IItem _item;
public SomeClass(ILabel label)
{
this._item = label;
}
public double SomeOperation()
{
return _item.Calories + _item.Fats + _item.Proteins; //just an example
}
}
void main()
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IItem, Item>();
SomeClass example = container.Resolve<SomeClass>();
//what I know I can do but I don't think it's the right way
example._item.Price = 100.0;
example._item.Salt = 4;
//you get it, how can I populate that the right way? and what if I have an array of "SomeClass" do I need to do that with every instance?
}
我希望知道如何以正确的方式填充类。谢谢
解决方案
依赖注入 (DI) 是将功能注入其他类型。
一个简单的例子是注入一个记录器。
class SomeClass
{
public ILogger _logger;
public SomeClass(ILogger logger)
{
this._logger = logger;
}
public double SomeOperation(IItem item)
{
_logger.Log("SomeOperation");
return item.Calories + item.Fats + item.Proteins;
}
}
推荐阅读
- angular - 重构 *ngIf 容器
- list - 使用 Haskell 中的函数将列表列表与列表组合
- reactjs - React.memo() vs React 函数式组件
- jquery - 从ajax结果并排提升两个div
- mongodb - 使用“Sudo service mongod start”和 mongod -f 运行 mongodb 有什么区别
- c# - 如何获得与解析 DateTime 对象相关的固定错误?
- python - 连接两个 numpy 数组通道
- android - 如何在 HERE 地图上实现触摸地图监听器
- python - PyQt5 可拖动图标从列表视图到另一个
- ruby-on-rails - “推送被拒绝,无法编译 Ruby 应用程序”在 herouku 上安装 decdim