Attribute.IsDefaultAttribute 方法
定义
在派生类中重写时,指示此实例的值是否是派生类的默认值。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.
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。true if this instance is the default attribute for the class; otherwise, false.
示例
下面的代码示例阐释了的用法 IsDefaultAttribute 。The following code example illustrates the use of 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");
}
}
}
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 ,且必须在派生类中实现才能对该类有用。The default implementation of this class returns false, and must be implemented in the derived class to be useful to that class.
此方法在派生类中的实现将此实例的值与标准默认值进行比较,并返回一个布尔值,该值指示此实例的值是否等于标准值。The implementation of this method in a derived class compares the value of this instance to a standard default value, then returns a Boolean value that indicates whether the value of this instance is equal to the standard value. 标准值通常编码为实现中的常数,或以编程方式存储在实现使用的字段中。The standard value is typically coded as a constant in the implementation, or stored programmatically in a field used by the implementation.