2011-12-26 1 views
1

я обычно объявляя поля в классе как частное поле вместе с общественной собственностью, которая получает доступ к этой области из-за пределы (ничего особенного до сих пор улыбки):C# комментирование техника/повторное использование комментариев

private bool doILookGood; 

public bool DoILookGood 
{ 
    get { return doILookGood; } 
    set { doILookGood = value; } 
} 

Теперь мне было интересно, есть ли элегантный и эффективный способ прокомментировать эту ситуацию, не повторяя один и тот же комментарий дважды. Другими словами, я хочу сохранить функциональность, которую IDE показывает мне комментарий переменных при наведении мыши с помощью всплывающей подсказки.

До сих пор я комментируя таким образом:

/// <summary> 
/// This i always true. 
/// </summary> 
private bool doILookGood; 

/// <summary> 
/// This i always true. 
/// </summary> 
public bool DoILookGood 
{ 
    get { return doILookGood; } 
    set { doILookGood = value; } 
} 

, и я хочу, чтобы иметь что-то вроде этого:

/// <summary> 
/// This i always true. 
/// </summary> 
private bool doILookGood; 

/// <summary cref="doILookGood" /> 
public bool DoILookGood 
{ 
    get { return doILookGood; } 
    set { doILookGood = value; } 
} 

Я знаю, что с помощью XML-тегов для комментирования приватных полей не очень значимый потому что они не отображаются в сгенерированном документе, но я снова хочу иметь (IDE-внутренние) комментарии-подсказки.

Может быть кто-то имеет ключ :)

+1

Я бы просто изменил это на автоматическое свойство 'public bool DoILookGood {get; задавать; } '. –

+1

Привет и спасибо за ваш быстрый ответ :) Это было бы очевидным решением, но в какой-то ситуации мне нужно разграничение между частным полем и общедоступным свойством getter/setter. –

+4

Да, я знаю ;-) Я бы проголосовал за _not_ комментирование частного поля, но только публичную собственность. –

ответ

6

Используйте автоматические свойства как можно больше. Это позволит избежать использования частного члена, если это не требуется.

public bool DoILookGood { get; set; } 

Если это невозможно (например, при реализации INotifyPropertyChanged), вот как я справляюсь с ним (обратите внимание, что это только для примера, я бы определенно использовать авто-свойства, а не код ниже):

/// <summary> 
    /// Private member for <see cref="MyValue"/>. 
    /// </summary> 
    private bool myValue; 

    /// <summary> 
    /// Gets or sets a value indicating whether ... 
    /// </summary> 
    /// <value> 
    /// <c>true</c> if ...; otherwise, <c>false</c>. 
    /// </value> 
    public bool MyValue 
    { 
     get { return this.myValue; } 
     set { this.myValue = value; } 
    } 

EDIT: Я также рекомендую использовать GhostDoc, чтобы сэкономить время (плагин, который способен автоматически генерировать комментарии).

+0

OK Я вижу, но с ** ** Я не получаю всплывающую подсказку, показывающую мне комментарий-текст из публичной собственности? –

+0

Нет, вы не будете, но вы можете перейти к свойству, если у вас установлены сторонние плагины (например, resharper). В любом случае, я не думаю, что вся информация о собственности должна быть скопирована для связанных частных членов. Частные члены свойств находятся здесь, потому что они необходимы, но разработчик не должен использовать их вне области самого свойства. Итак, единственное, что должен знать разработчик, - это связанное имя свойства. – ken2k

+0

OK Я постараюсь уменьшить необходимость документировать личные члены :), и для тех, кому я должен, я буду смотреть на сторонние инструменты (включая GhostDoc). Я просто подумал, что для этого общедоступного/частного сценария есть очевидный «обход», который все знают, кроме меня :) ... Большое спасибо :-) –