MethodBase.IsSpecialName 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一个值,该值指示此方法是否具有特殊名称。
public:
property bool IsSpecialName { bool get(); };
public bool IsSpecialName { get; }
member this.IsSpecialName : bool
Public ReadOnly Property IsSpecialName As Boolean
属性值
如果此方法具有特殊名称,则为 true
;否则为 false
。
实现
示例
此示例演示如何使用 IsSpecialName 从列表中筛选内部或私有成员。
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)" );
}
}
};
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)");
}
}
}
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
注解
位 SpecialName 设置为标记某些编译器以特殊方式处理的成员, (例如属性访问器和运算符重载方法) 。