将字符串列表或字符串数​​组传递到 Unity 注入构造函数(基于配置)

发布于 2024-08-30 14:40:32 字数 623 浏览 8 评论 0原文

在使用 XML 配置时尝试将字符串数组传递到构造函数参数列表中时,我似乎无法使统一工作。

当我尝试以下操作时:

<typeConfig ...>
  <constructor ...>
    <param ... parameterType="System.String[]">
     <array>    
      <value.../>
      <value.../>
     </array>
    </param> 
  </constructor>
</typeConfig>

对于看起来像这样的 c'tor:

void Foo(string[] inputParams_){ ... }

它总是在 Unity 的 FindConstructor(...) 方法中失败,指出它无法找到 c'tor mathcing the 参数类型 String.String

有谁知道如何成功地将一系列刺痛传递给这种类型的 c'tor?如果没有,如果 c'tor 接受 IList,我该如何处理字符串列表?

谢谢!

I cannot seem to get unity working when attempting to pass in an array of strings into a constructor parameter list, while using XML configuration.

When I try the following:

<typeConfig ...>
  <constructor ...>
    <param ... parameterType="System.String[]">
     <array>    
      <value.../>
      <value.../>
     </array>
    </param> 
  </constructor>
</typeConfig>

for a c'tor which looks like this:

void Foo(string[] inputParams_){ ... }

It always fails in Unity's FindConstructor(...) method stating that it cannot find a c'tor mathcing the parameter type of String.String

Does anyone know how to pass an array of stings successfully into this type of c'tor? If not, how can I do so with a list of strings, if the c'tor were to accept an IList?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

临风闻羌笛 2024-09-06 14:40:32

您不需要元素“param”的属性“parameterType”

这将起作用:

    <constructor>
      <param name="eventsDefinitions">
        <array>
          <value value="PhaseLoss"/>
          <value value="DCRC" />
          <value value="PhaseRotation" />
        </array>
      </param>
    </constructor>

You don't need the attribute 'parameterType' for the element 'param'

This will work:

    <constructor>
      <param name="eventsDefinitions">
        <array>
          <value value="PhaseLoss"/>
          <value value="DCRC" />
          <value value="PhaseRotation" />
        </array>
      </param>
    </constructor>
○愚か者の日 2024-09-06 14:40:32

通常我更喜欢在代码中配置 Unity,因此如果必须进行配置,我可能不会那么有帮助。但是......

通常我会使用
注册时的ConstructorInjector:

容器.Configure()
.ConfigureInjectionFor(new InjectionConstructor([value]))

但根据:
我可以将构造函数参数传递给 Unity 的 Resolve() 方法吗?

Unity 2 现在还应该包含在解析期间将参数动态传递到构造函数的功能:

“container.Resolve(new
参数覆盖{ {“名称”,
"酒吧" }, { "地址", 42 } });"

Typically I prefer to configure Unity in code, so I may not be that helpful if config is a must. But ....

Typically I'd use a
ConstructorInjector during registration:

container.Configure()
.ConfigureInjectionFor(new InjectionConstructor([value]))

But according to:
Can I pass constructor parameters to Unity's Resolve() method?

Unity 2 should now also includes the ability to pass parameters into the constructor dynamically during resolution:

"container.Resolve(new
ParameterOverrides { { "name",
"bar" }, { "address", 42 } });"

沫离伤花 2024-09-06 14:40:32

也许您必须完全限定类型名称:

System.String[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

或者,如果您不关心/不知道,您可以删除该版本。

Maybe you will have to fully qualify the type name:

System.String[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Optionally, you may drop the version if you don't care/know.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文