什么限制导致了这个?
无法按照您的描述进行操作的原因可能不是由于任何限制造成的,但这纯粹是语言设计决定。基本上,在设计语言时,他们说“这应该是可能的,但不是这个”。如果他们真的希望这成为可能,那么“限制”就会得到解决,这将是可能的。我不知道这个决定背后的具体原因。
/.../ 使用这些值传递一个字符串(也导致字符串类型的代码!),转换为字符串,然后依靠正则表达式尝试获取值而不是仅使用实际值 /.../
我也遇到过类似的情况。我有时想使用带有 lambda 表达式的属性来以函数的方式实现某些东西。但毕竟 c# 不是函数式语言,如果我以非函数式的方式编写代码,我就不需要这些属性。
简而言之,我是这样想的:如果我想以函数式的方式开发它,我应该使用像 f# 这样的函数式语言。现在我使用 c# 并以非功能方式进行操作,然后我不需要这些属性。
也许您应该简单地重新考虑您的设计,而不是像现在这样使用属性。
更新 1:
我声称 c# 不是函数式语言,但这是一种主观观点,并且没有严格定义“函数式语言”。我同意 Adam Wright 的观点,“/.../ 因此,我不会在一般讨论中将 C# 归类为函数式的——它充其量是多范式,带有一些函数式的味道。” 在为什么 C# 是一种函数式编程语言?
更新 2:我发现 Jon Skeet 的这篇文章:https ://stackoverflow.com/a/294259/1105687它涉及不允许通用属性类型,但在这种情况下推理可能相似:
Eric Lippert 的回答(释义):没有特别的原因,除了避免语言和编译器的复杂性用于不会增加太多价值的用例。