【发布时间】:2014-03-04 10:20:07
【问题描述】:
我使用的属性只能附加到具有默认访问器的属性, 我正在尝试以编程方式强制执行此编码约定。
这应该是有效的:
[Landing]
public int N {get; set;}
这应该是无效的:
[Landing]
public int N {get {return n;} set{n=value+1;}}
我如何才能检查代码是否有效,即使只是在运行时?
【问题讨论】:
-
为什么你想要这种区别?特别是考虑
public int N {get {return n;} set{n=value;}}- 自动实现版本的精确语义等价物。为什么我不能在上面指定属性? -
我认为这就是您要搜索的内容:stackoverflow.com/a/2210327/3047078
-
我也认为这不是一个好主意。您不可能关心该属性是否是自动实现的;你关心的是另一回事。告诉我们这是什么以及为什么您认为这种检查是实现它的方法。
-
我的目的是让 AutoMapper 忽略这些属性。使用 Automapper.IgnoreMap (=Landing) 属性是不知道 AutoMapper 配置选项以忽略带有 setter 的属性的解决方法。我同意这可能不是一个好主意。
标签: c# reflection