2009-10-22 6 views
1

PostSharp를 사용하여 내 속성에 컴파일 시간 논리를 추가하고 있습니다 ([IndexedCategory ("CatName", CatIndex)]). IndexedCategoryCompoundAspect에서 파생되었으므로 문제가 발생합니다. 적절한 수의 명명 된 매개 변수가 있습니다.속성에 상속 된 명명 된 매개 변수 숨기기 C# (3.5)

내가 인텔리전트에 의해 액세스/표시되는 것을 막을 수있는 방법이 있습니까?

건배

+0

용어 : 이름 지정된 매개 변수가 아닙니다. 그들은 단지 속성 일뿐입니다. –

답변

1

나는 약간의 것들을 시도했다 ... 을 컴파일하는 것이 확실하지 않은 방법은 속성을 쓸데없는 것으로 다시 선언하거나 설정자를 빼앗는 것이다. , 속성을 설정할 수 없습니다 위의 Name에,

[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; } } 
} 

어쨌든 :

나는 (비 검색 가능한 * 불변 표시) 몇 가지 다른 설정을 시도했지만 훨씬 도움이되지 않았다 비록 그것이 기초 위에서 할 수있다. 해커와 못생긴.

1

디자인을 다시 생각해보십시오. 상속이 갈 길이라고 확신하지는 않습니다. 어쩌면 작곡이 당신의 필요에 더 잘 맞을 수도 있습니다. 성취하려는 것에 대해 더 많이 알지 못하면 구체적인 예제를 제공하기가 어렵지만 기본 클래스의 속성이 필요하지 않은 경우 왜 그 클래스에서 상속을 받습니까?

+0

CompoundAspect는 오버로드하는 메소드 (ProvideAspects)를 제공하여 객체에 새 속성을 삽입합니다. 필자가 아는 한 PostSharp가 'CompoundAspect'를 상속 받아야 그 일을 할 수 있습니다. –

+0

원하지 않으면 CompoundAspect에서 파생 할 필요가 없습니다. System.Attribute에서 파생되고 ILaosAspect 및 ILaosAspectProvider 인터페이스를 구현할 수 있습니다. –

관련 문제