gpt4 book ai didi

c# - 使用 StructureMap 注入(inject)连接字符串不起作用

转载 作者:行者123 更新时间:2023-11-30 19:46:41 25 4
gpt4 key购买 nike

我对 Structure Map 还是很陌生,所以我不明白为什么这不起作用。我正在向存储库中注入(inject)一个“连接字符串”,但我不断从 Structure Map 中收到以下错误:

StructureMap 异常代码:205InstanceKey“a04b4f71-4171-4e9f-b98d-170fc9ee005f”缺少请求的实例属性“purchaseOrdersFilePath”

附带说明一下,连接字符串在引号中,因为我也在玩 linq to xml,所以“连接字符串”实际上是一个文件路径。我添加这个只是为了防止它可能与问题有关。

我的代码如下:

public class PurchaseOrderRepository : IPurchaseOrderRepository
{
private readonly string PurchaseOrdersFilePath;

public PurchaseOrderRepository(string purchaseOrdersFilePath)
{
if (string.IsNullOrWhiteSpace(purchaseOrdersFilePath)) throw new ArgumentNullException("purchaseOrdersFilePath");

PurchaseOrdersFilePath = purchaseOrdersFilePath;
}
}

在我的 Global.asax 文件中,我有以下配置语句:

private void RegisterControllerFactory()
{
var ioc = new Container();

var controllerFactory = new IocControllerFactory(ioc);
ControllerBuilder.Current.SetControllerFactory(controllerFactory);

ioc.Configure(r => r.Scan(x =>
{
x.AssemblyContainingType<HomeController>();
x.AddAllTypesOf<IController>();
x.Include(t => typeof(IController).IsAssignableFrom(t));
}));

ioc.Configure(r => r
.ForConcreteType<PurchaseOrderRepository>()
.Configure.Ctor<string>().Is(@"C:\Users\sromero\Documents\Visual Studio 2010\Projects\DIDemo\SupportFiles\POS.xml"));
}

我做错了什么?

感谢您的帮助。

最佳答案

事实证明,我在配置同一个组件两次(我没有反射(reflect)在问题中的示例代码中),所以我正在做的是:

ioc.Configure(r => r
.For<IPurchaseOrderRepository>()
.Use<PurchaseOrderRepository>());

ioc.Configure(r => r
.ForConcreteType<PurchaseOrderRepository>()
.Configure.Ctor<string>().Is(@"C:\Users\sromero\Documents\Visual Studio 2010\Projects\DIDemo\SupportFiles\POS.xml"));

当我应该做的是这样的时候:

ioc.Configure(r => r
.For<IPurchaseOrderRepository>()
.Use<PurchaseOrderRepository>()
.Ctor<string>().Is(@"C:\Users\sromero\Documents\Visual Studio 2010\Projects\DIDemo\SupportFiles\POS.xml"));

关于c# - 使用 StructureMap 注入(inject)连接字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com