Attribute.IsDefaultAttribute 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.
public:
virtual bool IsDefaultAttribute();
public virtual bool IsDefaultAttribute ();
abstract member IsDefaultAttribute : unit -> bool
override this.IsDefaultAttribute : unit -> bool
Public Overridable Function IsDefaultAttribute () As Boolean
반환
이 인스턴스가 클래스에 대한 기본 특성이면 true
이고, 그렇지 않으면 false
입니다.
예제
다음 코드 예제에서는 .의 IsDefaultAttribute사용을 보여 줍니다.
using namespace System;
using namespace System::Reflection;
// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum class Animal
{
// Pets.
Dog = 1,
Cat, Bird
};
// A custom attribute to allow a target to have a pet.
public ref class AnimalTypeAttribute: public Attribute
{
public:
// The constructor is called when the attribute is set.
AnimalTypeAttribute( Animal pet )
{
thePet = pet;
}
// Provide a default constructor and make Dog the default.
AnimalTypeAttribute()
{
thePet = Animal::Dog;
}
protected:
// Keep a variable internally ...
Animal thePet;
public:
property Animal Pet
{
// .. and show a copy to the outside world.
Animal get()
{
return thePet;
}
void set( Animal value )
{
thePet = value;
}
}
// Override IsDefaultAttribute to return the correct response.
virtual bool IsDefaultAttribute() override
{
return thePet == Animal::Dog;
}
};
public ref class TestClass
{
public:
// Use the default constructor.
[AnimalType]
void Method1(){}
};
int main()
{
// Get the class type to access its metadata.
Type^ clsType = TestClass::typeid;
// Get type information for the method.
MethodInfo^ mInfo = clsType->GetMethod( "Method1" );
// Get the AnimalType attribute for the method.
AnimalTypeAttribute^ atAttr = dynamic_cast<AnimalTypeAttribute^>(Attribute::GetCustomAttribute( mInfo, AnimalTypeAttribute::typeid ));
// Check to see if the default attribute is applied.
Console::WriteLine( "The attribute {0} for method {1} in class {2}", atAttr->Pet, mInfo->Name, clsType->Name );
Console::WriteLine( "{0} the default for the AnimalType attribute.", atAttr->IsDefaultAttribute() ? (String^)"is" : "is not" );
}
using System;
using System.Reflection;
namespace DefAttrCS
{
// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum Animal
{
// Pets.
Dog = 1,
Cat,
Bird,
}
// A custom attribute to allow a target to have a pet.
public class AnimalTypeAttribute : Attribute
{
// The constructor is called when the attribute is set.
public AnimalTypeAttribute(Animal pet)
{
thePet = pet;
}
// Provide a default constructor and make Dog the default.
public AnimalTypeAttribute()
{
thePet = Animal.Dog;
}
// Keep a variable internally ...
protected Animal thePet;
// .. and show a copy to the outside world.
public Animal Pet
{
get { return thePet; }
set { thePet = Pet; }
}
// Override IsDefaultAttribute to return the correct response.
public override bool IsDefaultAttribute()
{
if (thePet == Animal.Dog)
return true;
return false;
}
}
public class TestClass
{
// Use the default constructor.
[AnimalType]
public void Method1()
{}
}
class DemoClass
{
static void Main(string[] args)
{
// Get the class type to access its metadata.
Type clsType = typeof(TestClass);
// Get type information for the method.
MethodInfo mInfo = clsType.GetMethod("Method1");
// Get the AnimalType attribute for the method.
AnimalTypeAttribute atAttr =
(AnimalTypeAttribute)Attribute.GetCustomAttribute(mInfo,
typeof(AnimalTypeAttribute));
// Check to see if the default attribute is applied.
Console.WriteLine("The attribute {0} for method {1} in class {2}",
atAttr.Pet, mInfo.Name, clsType.Name);
Console.WriteLine("{0} the default for the AnimalType attribute.",
atAttr.IsDefaultAttribute() ? "is" : "is not");
}
}
}
open System
// An enumeration of animals. Start at 1 (0 = uninitialized).
type Animal =
| Dog = 1
| Cat = 2
| Bird = 3
// A custom attribute to allow a target to have a pet.
type AnimalTypeAttribute(pet) =
inherit Attribute()
member val Pet = pet
// Override IsDefaultAttribute to return the correct response.
override _.IsDefaultAttribute() =
pet = Animal.Dog
// Provide a default constructor and make Dog the default.
new() = AnimalTypeAttribute Animal.Dog
type TestClass() =
// Use the default constructor.
[<AnimalType>]
member _.Method1() = ()
// Get the class type to access its metadata.
let clsType = typeof<TestClass>
// Get type information for the method.
let mInfo = clsType.GetMethod "Method1"
// Get the AnimalType attribute for the method.
let atAttr =
Attribute.GetCustomAttribute(mInfo, typeof<AnimalTypeAttribute>)
:?> AnimalTypeAttribute
// Check to see if the default attribute is applied.
printf $"The attribute {atAttr.Pet} for method {mInfo.Name} in class {clsType.Name} "
printfn $"""{if atAttr.IsDefaultAttribute() then "is" else "is not"} the default for the AnimalType attribute."""
// Output:
// The attribute Dog for method Method1 in class TestClass is the default for the AnimalType attribute.
Imports System.Reflection
Module DemoModule
' An enumeration of animals. Start at 1 (0 = uninitialized).
Enum Animal
' Pets
Dog = 1
Cat
Bird
End Enum
' Visual Basic requires that the AttributeUsage be specified.
' A custom attribute to allow a target to have a pet.
<AttributeUsage(AttributeTargets.Method)> _
Public Class AnimalTypeAttribute
Inherits Attribute
' The constructor is called when the attribute is set.
Public Sub New(ByVal animal As Animal)
Me.thePet = animal
End Sub
' Provide a default constructor and make Dog the default.
Public Sub New()
thePet = Animal.Dog
End Sub
' Keep a variable internally ...
Protected thePet As Animal
' .. and show a copy to the outside world.
Public Property Pet() As Animal
Get
Return thePet
End Get
Set(ByVal Value As Animal)
thePet = Value
End Set
End Property
' Override IsDefaultAttribute to return the correct response.
Public Overrides Function IsDefaultAttribute() As Boolean
If thePet = Animal.Dog Then
Return True
Else
Return False
End If
End Function
End Class
Public Class TestClass
' Use the default constructor.
<AnimalType()> _
Public Sub Method1()
End Sub
End Class
Sub Main()
' Get the class type to access its metadata.
Dim clsType As Type = GetType(TestClass)
' Get type information for the method.
Dim mInfo As MethodInfo = clsType.GetMethod("Method1")
' Get the AnimalType attribute for the method.
Dim attr As Attribute = Attribute.GetCustomAttribute(mInfo, _
GetType(AnimalTypeAttribute))
If Not attr Is Nothing And TypeOf attr Is AnimalTypeAttribute Then
' Convert the attribute to the required type.
Dim atAttr As AnimalTypeAttribute = _
CType(attr, AnimalTypeAttribute)
Dim strDef As String
' Check to see if the default attribute is applied.
If atAttr.IsDefaultAttribute() Then
strDef = "is"
Else
strDef = "is not"
End If
' Display the result.
Console.WriteLine("The attribute {0} for method {1} " & _
"in class {2}", atAttr.Pet.ToString(), mInfo.Name, _
clsType.Name)
Console.WriteLine("{0} the default for the AnimalType " & _
"attribute.", strDef)
End If
End Sub
End Module
설명
이 클래스의 기본 구현은 반환 false
되며 해당 클래스에 유용하려면 파생 클래스에서 구현해야 합니다.
파생 클래스에서 이 메서드의 구현은 이 인스턴스의 값을 표준 기본값과 비교한 다음 이 인스턴스의 값이 표준 값과 같은지 여부를 나타내는 부울 값을 반환합니다. 표준 값은 일반적으로 구현에서 상수로 코딩되거나 구현에서 사용하는 필드에 프로그래밍 방식으로 저장됩니다.