属性构造函数的默认值?
我收到这个错误,
错误CS0182:属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式
当我尝试写这样的东西时
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public class UrlAttribute : Attribute { public UrlAttribute(string pattern, string name=null) { // ...
它甚至没有显示行号,但是当我取出=null
位时它会消失。
实际上,错误只发生在我提供默认值并依赖它(即我省略它)时
[Url("/index")]
我很想知道为什么会这样? “null”如何不是常量表达式?
我叫’虫’。
我希望你不介意,我向微软报告了这个错误。
更新:
我今天收到了微软的以下反馈,重点补充说。
感谢您报告此问题,您遇到过Visual Studio!
我们在代码中的属性上修复了可选的字符串参数。 您将在VS 2010之后的Visual Studio版本中看到此修复程序。
亚历克斯特纳
项目经理
Visual Basic和C#编译器
属性已经提供了默认参数。 您只需在属性上创建公共属性,然后可以在属性实例化过程中分配这些属性。 它已经有效,它已经很好理解,并且与框架属性的工作方式一致。 那么……为什么不使用该机制而不是尝试冗余地向构造函数添加默认参数?