MethodBase.IsSpecialName 属性
获取一个值,该值指示此方法是否具有特殊名称。
**命名空间:**System.Reflection
**程序集:**mscorlib(在 mscorlib.dll 中)
语法
声明
Public ReadOnly Property IsSpecialName As Boolean
用法
Dim instance As MethodBase
Dim value As Boolean
value = instance.IsSpecialName
public bool IsSpecialName { get; }
public:
virtual property bool IsSpecialName {
bool get () sealed;
}
/** @property */
public final boolean get_IsSpecialName ()
public final function get IsSpecialName () : boolean
属性值
如果此方法具有特殊名称,则为 true;否则为 false。
备注
SpecialName 位被设置为由某些编译器(如属性访问器和运算符重载方法)以特殊方式处理的标志成员。
示例
本示例显示使用 IsSpecialName 从列表中筛选出内部成员或私有成员。
Imports System
Imports System.IO
Imports System.Reflection
Imports System.Text
Public Class Sample
Protected ShowMethods As Boolean
Protected myWriter As StreamWriter
Private Sub DumpMethods(ByVal aType As Type)
If Not ShowMethods Then
Return
End If
Dim mInfo As MethodInfo() = aType.GetMethods()
myWriter.WriteLine("Methods")
Dim found As Boolean = False
If mInfo.Length <> 0 Then
Dim i As Integer
For i = 0 To mInfo.Length - 1
' Only display methods declared in this type. Also
' filter out any methods with special names, because these
' cannot be generally called by the user. That is, their
' functionality is usually exposed in other ways, for example,
' property get/set methods are exposed as properties.
If mInfo(i).DeclaringType Is aType _
And Not mInfo(i).IsSpecialName Then
found = True
Dim modifiers As New StringBuilder()
If mInfo(i).IsStatic Then
modifiers.Append("static ")
End If
If mInfo(i).IsPublic Then
modifiers.Append("public ")
End If
If mInfo(i).IsFamily Then
modifiers.Append("protected ")
End If
If mInfo(i).IsAssembly Then
modifiers.Append("internal ")
End If
If mInfo(i).IsPrivate Then
modifiers.Append("private ")
End If
myWriter.WriteLine("{0} {1}", modifiers, mInfo(i))
End If
Next i
End If
If Not found Then
myWriter.WriteLine("(none)")
End If
End Sub
End Class
using System;
using System.IO;
using System.Reflection;
using System.Text;
public class Sample
{
protected bool ShowMethods;
protected StreamWriter myWriter;
private void DumpMethods(Type aType)
{
if (!ShowMethods)
return;
MethodInfo[] mInfo = aType.GetMethods();
myWriter.WriteLine("Methods");
bool found = false;
if (mInfo.Length != 0)
{
for (int i=0; i < mInfo.Length; i++)
{
// Only display methods declared in this type. Also
// filter out any methods with special names, because these
// cannot be generally called by the user. That is, their
// functionality is usually exposed in other ways, for example,
// property get/set methods are exposed as properties.
if (mInfo[i].DeclaringType == aType && !mInfo[i].IsSpecialName)
{
found = true;
StringBuilder modifiers = new StringBuilder();
if (mInfo[i].IsStatic) {modifiers.Append("static ");}
if (mInfo[i].IsPublic) {modifiers.Append("public ");}
if (mInfo[i].IsFamily) {modifiers.Append("protected ");}
if (mInfo[i].IsAssembly) {modifiers.Append("internal ");}
if (mInfo[i].IsPrivate) {modifiers.Append("private ");}
myWriter.WriteLine("{0} {1}", modifiers, mInfo[i]);
}
}
}
if (!found)
{
myWriter.WriteLine("(none)");
}
}
}
using namespace System;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Text;
public ref class Sample
{
protected:
bool ShowMethods;
StreamWriter^ myWriter;
private:
void DumpMethods( Type^ aType )
{
if ( !ShowMethods )
return;
array<MethodInfo^>^mInfo = aType->GetMethods();
myWriter->WriteLine( "Methods" );
bool found = false;
if ( mInfo->Length != 0 )
{
for ( int i = 0; i < mInfo->Length; i++ )
{
// Only display methods declared in this type. Also
// filter out any methods with special names, because these
// cannot be generally called by the user. That is, their
// functionality is usually exposed in other ways, for example,
// property get/set methods are exposed as properties.
if ( mInfo[ i ]->DeclaringType == aType && !mInfo[ i ]->IsSpecialName )
{
found = true;
StringBuilder^ modifiers = gcnew StringBuilder;
if ( mInfo[ i ]->IsStatic )
{
modifiers->Append( "static " );
}
if ( mInfo[ i ]->IsPublic )
{
modifiers->Append( "public " );
}
if ( mInfo[ i ]->IsFamily )
{
modifiers->Append( "protected " );
}
if ( mInfo[ i ]->IsAssembly )
{
modifiers->Append( "internal " );
}
if ( mInfo[ i ]->IsPrivate )
{
modifiers->Append( "private " );
}
myWriter->WriteLine( "{0} {1}", modifiers, mInfo[ i ] );
}
}
}
if ( !found )
{
myWriter->WriteLine( "(none)" );
}
}
};
import System.*;
import System.IO.*;
import System.Reflection.*;
import System.Text.*;
public class Sample
{
protected boolean showMethods;
protected StreamWriter myWriter;
private void DumpMethods(Type aType)
{
if (!(showMethods)) {
return ;
}
MethodInfo mInfo[] = aType.GetMethods();
myWriter.WriteLine("Methods");
boolean found = false;
if ( mInfo.length != 0 ) {
for(int i=0;i < mInfo.length;i++) {
// Only display methods declared in this type. Also
// filter out any methods with special names, because these
// cannot be generally called by the user. That is, their
// functionality is usually exposed in other ways, for example,
// property get/set methods are exposed as properties.
if ( mInfo[i].get_DeclaringType().Equals(aType) &&
!(mInfo[i].get_IsSpecialName()) ) {
found = true;
StringBuilder modifiers = new StringBuilder();
if ( mInfo[i].get_IsStatic() ) {
modifiers.Append("static ");
}
if ( mInfo[i].get_IsPublic() ) {
modifiers.Append("public ");
}
if ( mInfo[i].get_IsFamily() ) {
modifiers.Append("protected ");
}
if ( mInfo[i].get_IsAssembly()) {
modifiers.Append("internal ");
}
if ( mInfo[i].get_IsPrivate() ) {
modifiers.Append("private ");
}
myWriter.WriteLine("{0} {1}",
modifiers, mInfo.get_Item(i));
}
}
}
if (!(found) ) {
myWriter.WriteLine("(none)");
}
} //DumpMethods
} //Sample
private function DumpMethods(aType : Type) : void
{
if (!ShowMethods)
return;
var mInfo : MethodInfo[] = aType.GetMethods();
myWriter.WriteLine("Methods");
var found : boolean = false;
if (mInfo.Length != 0)
{
for ( var i:int =0; i < mInfo.Length; i++ )
{
// Only display methods declared in this type. Also
// filter out any methods with special names, because these
// cannot be generally called by the user. That is, their
// functionality is usually exposed in other ways, for example,
// property get/set methods are exposed as properties.
if (mInfo[i].DeclaringType.Equals(aType) && !mInfo[i].IsSpecialName)
{
found = true;
var modifiers : StringBuilder = new StringBuilder();
if (mInfo[i].IsStatic) {modifiers.Append("static ");}
if (mInfo[i].IsPublic) {modifiers.Append("public ");}
if (mInfo[i].IsFamily) {modifiers.Append("protected ");}
if (mInfo[i].IsAssembly) {modifiers.Append("internal ");}
if (mInfo[i].IsPrivate) {modifiers.Append("private ");}
myWriter.WriteLine("{0} {1}", [modifiers, mInfo[i]]);
}
}
}
if (!found)
{
myWriter.WriteLine("(none)");
}
}
平台
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0、1.0
请参见
参考
MethodBase 类
MethodBase 成员
System.Reflection 命名空间
Boolean
MethodAttributes 枚举