【发布时间】:2012-01-27 12:41:57
【问题描述】:
我想要一些技术来自动替换以下代码:
[WarnIfGetButUninitialized]
public int MyProperty {get; set; }
有了这个:
/// <summary>
/// Property which warns you if its value is fetched before it has been specifically instantiated.
/// </summary>
private bool backingFieldIsPopulated = false;
private int backingField;
public int MyProperty {
get
{
if (backingFieldIsPopulated == false)
{
Console.WriteLine("Error: cannot fetch property before it has been initialized properly.\n");
return 0;
}
return backingField;
}
set {
backingField = value;
backingFieldIsPopulated = true;
}
}
我更喜欢在编译时工作的解决方案,因为反射很慢。
我知道面向方面的编程 (AOP) 会做到这一点(例如 PostSharp 和 CciSharp),但如果有任何其他方法可以实现这一点,我会很感兴趣。
更新
请参阅How to use PostSharp to warn if a property is accessed before it has been initialized?,其中包含一些示例代码的链接,这些示例代码演示了使用 PostSharp 的技术。
【问题讨论】:
-
我想说你最简单的选择是使用 PostSharp 或 Unity IoC,它们可以做有限的 AOP。
标签: c# .net visual-studio