Как бы я использовал PostSharp, чтобы заменить это:
[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;
}
}
Обновление
Я также должен добавить, что это хороший способ повысить надежность кода. В проекте с 20000 строк приятно знать, что все правильно инициализируется перед использованием. Я собираюсь использовать это для сборки Debug и удалить ее в сборке Release, потому что
Я не хочу замедлять окончательный выпуск без необходимости.