【发布时间】:2024-11-21 04:05:01
【问题描述】:
我有一些业务对象必须一起使用才能获得特定的结果。请看以下非常简单的示例以供参考。
我的问题是:如何在 Station 类中使用 DI 获得对代理的引用?我最喜欢构造函数注入,但这不可能是 Station 类已经有一个 stationCode 作为必需项。
有什么想法吗?
用法:
var station1 = new Station("xx");
var station2 = new Station("yy");
var route = new Route(station1, station2);
var length = route.GetLength();
public class Location
{
public int Position {get; set;}
}
public interface IAgent
{
Location GetLocation(string stationCode);
}
public class Station
{
private string _stationCode;
public Station(string stationCode)
{
_stationCode = stationCode;
}
public Location GetLocation()
{
// issue here: how to get a reference to the agent instance using DI
_agent.GetLocation(_stationCode);
}
}
public class Route
{
private Station _station1;
private Station _station2;
public Route(Station station1, Station station2)
{
_station1 = station1;
_station2 = station2;
}
public int GetLength()
{
var location1 = _station1.GetLocation();
var location2 = _station2.GetLocation();
result = location2.Position - location1.Position;
return result;
}
}
【问题讨论】:
-
为什么不想在 Station 构造函数中添加第二个参数并使用 DI 解析它或添加新的构造函数?您如何看待立即解决方法“Station.GetLocation 中的 IAgent”?
标签: c# dependency-injection business-logic