반응형
속성에 대한 상속은 어떻게 작동합니까?
무엇을 합니까?Inherited
속성에 대한 bool 속성은 무엇을 의미합니까?
내 수업을 속성으로 정의하면,AbcAtribute
(그것은.Inherited = true
), 해당 클래스에서 다른 클래스를 상속하는 경우 파생 클래스에도 동일한 속성이 적용됩니까?
코드 예제를 사용하여 이 질문을 명확히 하기 위해 다음을 상상해 보십시오.
[AttributeUsage(AttributeTargets.Class, Inherited = true)]
public class Random: Attribute
{ /* attribute logic here */ }
[Random]
class Mother
{ }
class Child : Mother
{ }
한다Child
또한 그것을 가지고 있습니다.Random
속성이 적용됩니까?
Inherited = true(기본값)인 경우 생성 중인 특성이 특성으로 장식된 클래스의 하위 항목으로 상속될 수 있음을 의미합니다.
따라서 - [AttributeUsage(상속됨 = true)]를 사용하여 MyUberAttribute를 생성하는 경우
[AttributeUsage (Inherited = True)]
MyUberAttribute : Attribute
{
string _SpecialName;
public string SpecialName
{
get { return _SpecialName; }
set { _SpecialName = value; }
}
}
그런 다음 속성을 사용하여 슈퍼 클래스를 장식합니다.
[MyUberAttribute(SpecialName = "Bob")]
class MySuperClass
{
public void DoInterestingStuf () { ... }
}
MySuperClass의 하위 클래스를 만들면 이 속성이...
class MySubClass : MySuperClass
{
...
}
그런 다음 MySubClass 인스턴스를 인스턴스화합니다.
MySubClass MySubClassInstance = new MySubClass();
그런 다음 속성이 있는지 테스트합니다.
MySubClassInstance <--- 이제 "Bob"이 SpecialName 값으로 지정된 MyUberAttribute가 있습니다.
네, 그것이 정확히 의미하는 바입니다.속성
[AttributeUsage(Inherited=true)]
public class FooAttribute : System.Attribute
{
private string name;
public FooAttribute(string name)
{
this.name = name;
}
public override string ToString() { return this.name; }
}
[Foo("hello")]
public class BaseClass {}
public class SubClass : BaseClass {}
// outputs "hello"
Console.WriteLine(typeof(SubClass).GetCustomAttributes(true).First());
특성 상속은 기본적으로 사용하도록 설정되어 있습니다.
이 동작은 다음과 같이 변경할 수 있습니다.
[AttributeUsage (Inherited = False)]
언급URL : https://stackoverflow.com/questions/1240960/how-does-inheritance-work-for-attributes
반응형
'programing' 카테고리의 다른 글
다른 분기의 모든 변경 사항을 단일 커밋으로 병합(스쿼시 포함) (0) | 2023.05.26 |
---|---|
방화벽 뒤에서 HTTPS를 통해 GitHub에 액세스하려는 SSL 인증서가 거부됨 (0) | 2023.05.21 |
엑셀에서 수식에서 열 또는 행 전체를 선택하는 방법은 무엇입니까? (0) | 2023.05.21 |
SQL Azure DTU를 IOPS로 변환하시겠습니까? (0) | 2023.05.21 |
PostgreSQL: Postgre의 암호 재설정 중Ubuntu의 SQL (0) | 2023.05.21 |