假设我定义了这个简单的类:
public class State
{
public int Id { get; set; }
public string Name { get; set; }
}
然后我将定义、创建和注册 50 个命名实例。用户登录,我知道(比如从他的配置设置)他来自哪个州。在我的控制器中很容易说
var userState= ObjectFactory.GetNamedInstance<State>("Idaho");
但是我更愿意将它传递给构造函数,如下所示:
public class HomeController : ControllerBase
{
private State _state;
public HomeController(State state)
{
_state = state;
}
}
但是,要使其正常工作,必须传递一个特定的实例。有没有办法指定这个?
另一件事是我刚刚想到的。我可以将其定义为状态的集合,而不是定义 50 个单独的状态,如下所示:
public class StateCollection
{
public List<State> States { get; set; }
}
然后在构造函数中传递 StateCollection。然后客户端可以使用 LINQ 并选择适当的状态。这是一个合理的方法吗?如果集合很大怎么办?