c# - 构造函数参数枚举和魔术字符串

标签 c# .net reflection ninject

我正在开发我的 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/

相关文章:

c# - 您应该如何构建 OData URI?

c# - 如何从 C# 线程获取成员函数作为该线程参数的对象?

c# - 从 .Net 控制台应用程序访问 Moodle API

c# - C# 是否支持可变数量的参数,如何支持?

.net - 在.NET中使用反射调用泛型方法

c# - 如何获取程序集的完整文件路径?

c# - 路径平滑/点减少算法

.net - 在 Windows 上使用的 Subversion 服务器

c# - .net - Array.Sort 和 Array.BinarySearch 的问题 - 文化和全局化

c# - 接口(interface)上的属性