gpt4 book ai didi

c# - 创建一个单例来访问统一容器或通过应用程序传递它更好吗?

转载 作者:IT王子 更新时间:2023-10-29 03:50:38 26 4
gpt4 key购买 nike

<分区>

我正在尝试使用 IoC 框架,但我选择使用 Unity。我仍然不完全理解的一件事是如何在应用程序中更深入地解析对象。我怀疑我只是暂时没有打开灯泡,这会很清楚。

所以我正在尝试在伪代码中做类似下面的事情

void Workflow(IUnityContatiner contatiner, XPathNavigator someXml)
{
testSuiteParser = container.Resolve<ITestSuiteParser>
TestSuite testSuite = testSuiteParser.Parse(SomeXml)
// Do some mind blowing stuff here
}

因此 testSuiteParser.Parse 执行以下操作

TestSuite Parse(XPathNavigator someXml)
{
TestStuite testSuite = ??? // I want to get this from my Unity Container
List<XPathNavigator> aListOfNodes = DoSomeThingToGetNodes(someXml)

foreach (XPathNavigator blah in aListOfNodes)
{
//EDIT I want to get this from my Unity Container
TestCase testCase = new TestCase()
testSuite.TestCase.Add(testCase);
}
}

我可以看到三个选项:

  1. 创建一个 Singleton 来存储我可以在任何地方访问的统一容器。我真的不喜欢这种方法。添加这样的依赖项以使用依赖项注入(inject)框架似乎有点奇怪。
  2. 将 IUnityContainer 传递到我的 TestSuiteParser 类及其每个子类(假设它有 n 层深,或者实际上大约有 3 层深)。到处传递 IUnityContainer 看起来很奇怪。我可能只需要克服这个问题。
  3. 在正确使用 Unity 的方法上拥有灯泡时刻。希望有人可以帮助按下开关。

[编辑]我不清楚的一件事是我想为 foreach 语句的每次迭代创建一个新的测试用例实例。上面的示例需要解析测试套件配置并填充测试用例对象的集合

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