我正在开发我的 c# .net 应用程序并使用 Ninject 实现 IoC/DI 模式,现在 Ninject 有一个名为 ConstructorArgument
的类,它有两个参数(argName、argValue)。
所以我需要像这样传递 static argName
new ConstructorArgument("strVar","")
传递硬编码字符串似乎不是一个好的选择。
所以我想为构造函数参数使用反射创建类似动态枚举的东西,所以我不需要传递硬编码字符串。
请指导我完成此过程或建议我采取其他方法来实现此目的。
最佳答案
like dynamics enums
没有现成的构造。如果您真的讨厌字符串,您可以编写某种表达式树 lambda(即 () => new Foo(strVal: "")
或 ( ) => new Foo("")
,但是 - a: 需要大量工作,如果容器提供了其他参数,b: 将无法正常工作。
老实说,这不是一个问题,特别是因为命名参数意味着参数名称应该被视为一个契约。 IMO,只需使用字符串。如果您担心,请确保在单元测试中涵盖该场景,以便及早发现它是否发生变化。
关于c# - 构造函数参数枚举和魔术字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6607171/