c# - 如何通过 StructureMap 中的 ExplicitArguments 类型选择构造函数?
问题描述
我有一个Foo
带有 3 个构造函数的类,每个构造函数都有 2 个参数。
public class Foo
{
public string Location;
public Foo(IContainer container, DefaultData data)
{
Location = "DefaultData";
}
public Foo(IContainer container, DbData data)
{
Location = "DbData";
}
public Foo(IContainer container, NetworkData data)
{
Location = "NetworkData";
}
}
public class DefaultData
{
}
public class DbData
{
}
public class NetworkData
{
}
现在如果我想获得一个实例
var container = new Container();
ExplicitArguments args = new ExplicitArguments();
args.Set(new NetworkData(new decimal(1.3D), 'f'));
var instance = container.GetInstance<Foo>(args);
我总是遇到以下异常:
Unable to create a build plan for concrete type TestConsole.DefaultData
new DefaultData(String s, Int32 i)
┣ String s = Required primitive dependency is not explicitly defined
┗ Int32 i = Required primitive dependency is not explicitly defined
1.) Attempting to create a BuildPlan for Instance of TestConsole.DefaultData -- TestConsole.DefaultData
2.) new Foo(*Default of IContainer*, *Default of DefaultData*)
3.) TestConsole.Foo
4.) Instance of TestConsole.Foo
5.) Container.GetInstance<TestConsole.Foo>({TestConsole.NetworkData=TestConsole.NetworkData})
我还尝试使用自定义IConstructor
选择器解决我的问题,但我没有收到提供的参数(类型),并且无法决定我应该使用哪个构造函数。
我想实现构造函数由传递的ExplicitArguments
.
解决方案
推荐阅读
- android - 通过单击重置不在android中的Seekbar
- java - 具有 STRICT 匹配策略的 ModelMapper
- python - 使用 lxml 从某个 xml 标签中提取所有文本
- sql - SQL - 基于查询结果的条件连接
- c# - 如何更新 Graphics.DrawLine() 点位置?
- python - 如何根据 Python 中的频谱图获取时间序列?
- java - Apache POI 图表 - 标题格式
- c++ - 无法在用 C++ 编写的 UWP 上使用 SQLite 打开数据库
- windows - 文件夹路径的 ARG 不起作用
- excel - 打开word文档时禁止更新链接警告并通过vba向excel发送密码