Скрытие унаследованных именованных параметров в атрибутах C # (3.5) - PullRequest
1 голос
/ 22 октября 2009

Я использую PostSharp для добавления некоторой логики времени компиляции в мои атрибуты - в одном случае [IndexedCategory ("CatName", CatIndex)]. Проблема возникает потому, что IndexedCategory происходит от CompoundAspect - у которого есть разумное количество именованных параметров.

Есть ли какой-нибудь способ, которым я могу предотвратить доступ / отображение этих данных с помощью интеллигенции?

Приветствия

Ответы [ 2 ]

1 голос
/ 22 октября 2009

Я попробовал несколько вещей ... один верный способ заставить его не компилировать - это повторно объявить свойства как устаревшие или убрать установщик - хотя это и не приятно. *

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

[ImmutableObject(true)] // I'm sure this used to toggle intellisense for attribs
public class FooAttribute : BarAttribute
{
    [EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
    [ReadOnly(true)]
    public new string Name { get { return base.Name; } }
}

В любом случае, в приведенном выше Name нельзя установить атрибут, даже если он может быть установлен на основе. Хаки и некрасивые.

1 голос
/ 22 октября 2009

Я думаю, вы должны переосмыслить свой дизайн. Я не уверен, что наследование - это путь, возможно, композиция лучше подойдет вашим потребностям. Не зная больше о том, что вы пытаетесь достичь, очень трудно привести конкретные примеры, но если вам не нужны свойства базового класса, почему вы наследуете от него?

...