Type.DefaultBinder Type.DefaultBinder Type.DefaultBinder Type.DefaultBinder Property

定義

既定のバインダーへの参照を取得します。このバインダーは、InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) によって呼び出される適切なメンバーを選択するための内部規則を実装します。Gets a reference to the default binder, which implements internal rules for selecting the appropriate members to be called by InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).

public:
 static property System::Reflection::Binder ^ DefaultBinder { System::Reflection::Binder ^ get(); };
public static System.Reflection.Binder DefaultBinder { get; }
member this.DefaultBinder : System.Reflection.Binder
Public Shared ReadOnly Property DefaultBinder As Binder

プロパティ値

システムで使用される既定のバインダーへの参照。A reference to the default binder used by the system.

次の例から、既定のバインダーを取得する、DefaultBinderプロパティを渡すことによって、MyClass の単なるメンバーを呼び出すと、DefaultBinderへのパラメーターとして値InvokeMemberThe following example gets the default binder from the DefaultBinder property, and invokes a member of MyClass by passing the DefaultBinder value as a parameter to InvokeMember.

using namespace System;
using namespace System::Reflection;
ref class MyClass
{
public:
   void HelloWorld()
   {
      Console::WriteLine( "Hello World" );
   }

};

int main()
{
   try
   {
      Binder^ defaultBinder = Type::DefaultBinder;
      MyClass^ myClass = gcnew MyClass;
      
      // Invoke the HelloWorld method of MyClass.
      myClass->GetType()->InvokeMember( "HelloWorld", BindingFlags::InvokeMethod, defaultBinder, myClass, nullptr );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception : {0}", e->Message );
   }

}

using System;
using System.Reflection;

public class MyDefaultBinderSample
{
    public static void Main()
    {
        try
        {
            Binder defaultBinder = Type.DefaultBinder;
            MyClass myClass = new MyClass();
            // Invoke the HelloWorld method of MyClass.
            myClass.GetType().InvokeMember("HelloWorld", BindingFlags.InvokeMethod,
                defaultBinder, myClass, new object [] {});
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception :" + e.Message);
        }
    }	

    class MyClass
    {
        public void HelloWorld()
        {
            Console.WriteLine("Hello World");
        }	
    }
}
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

Public Class MyDefaultBinderSample
    Public Shared Sub Main()
        Try
            Dim defaultBinder As Binder = Type.DefaultBinder
            Dim [myClass] As New [MyClass]()
            ' Invoke the HelloWorld method of MyClass.
            [myClass].GetType().InvokeMember("HelloWorld", BindingFlags.InvokeMethod, defaultBinder, [myClass], New Object() {})
        Catch e As Exception
            Console.WriteLine("Exception :" + e.Message.ToString())
        End Try
    End Sub 'Main

    Class [MyClass]

        Public Sub HelloWorld()
            Console.WriteLine("Hello World")
        End Sub 'HelloWorld
    End Class '[MyClass]
End Class 'MyDefaultBinderSample 

注釈

共通言語ランタイムで提供される既定のバインダーでは、非常に特殊な状況がすべてに該当します。The default binder provided with the common language runtime is applicable in all but the most specialized circumstances. 派生した型バインダーとは異なる、指定された既定のバインダーの次のようにルールを定義する必要がある場合、Binderクラスし、を使用する型のインスタンスを渡す、binderのいずれかのパラメーター、InvokeMemberオーバー ロードします。If you need a binder that follows rules that differ from those of the supplied default binder, define a type derived from the Binder class and pass an instance of that type using the binder parameter of one of the InvokeMember overloads.

リフレクションは、共通型システムのアクセシビリティ規則をモデル化します。Reflection models the accessibility rules of the common type system. たとえば、呼び出し元が同じアセンブリ内にある場合は、呼び出し元は必要ありません特殊なアクセス許可内部メンバー。For example, if the caller is in the same assembly, the caller does not need special permissions for internal members. それ以外の場合、呼び出し元が必要なReflectionPermissionします。Otherwise, the caller needs ReflectionPermission. これは、保護されているメンバーの参照で一貫性のある、プライベート、およびなど。This is consistent with lookup of members that are protected, private, and so on.

一般原則をChangeType拡大変換で、データが失われることだけを実行する必要があります。The general principle is that ChangeType should perform only widening conversions, which never lose data. 拡大変換の例では、64 ビット符号付き整数である値を 32 ビット符号付き整数である値を変換です。An example of a widening conversion is converting a value that is a 32-bit signed integer to a value that is a 64-bit signed integer. これは、縮小変換にデータを失う可能性がありますから区別されます。This is distinguished from a narrowing conversion, which may lose data. 縮小変換の例は、64 ビット符号付き整数を 32 ビット符号付き整数に変換です。An example of a narrowing conversion is converting a 64-bit signed integer to a 32-bit signed integer.

次の表では、既定のバインダーでサポートされる変換を示します。The following table lists the conversions supported by the default binder.

ソースの種類Source Type ターゲットの種類Target Type
任意の型Any type その基本型。Its base type.
任意の型Any type 実装するインターフェイスです。The interface it implements.
CharChar Unt16、UInt32、Int32、UInt64、Int64 を Single、DoubleUnt16, UInt32, Int32, UInt64, Int64, Single, Double
ByteByte Char、Unt16、Int16、UInt32、Int32、UInt64、Int64、Single、DoubleChar, Unt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double
SByteSByte Int16、Int32、Int64、Single、DoubleInt16, Int32, Int64, Single, Double
UInt16UInt16 UInt32、Int32、UInt64、Int64、Single、DoubleUInt32, Int32, UInt64, Int64, Single, Double
Int16Int16 Int32、Int64、Single、DoubleInt32, Int64, Single, Double
UInt32UInt32 UInt64、Int64、Single、DoubleUInt64, Int64, Single, Double
Int32Int32 Int64、Single、DoubleInt64, Single, Double
UInt64UInt64 Single、DoubleSingle, Double
Int64Int64 Single、DoubleSingle, Double
SingleSingle 倍精度浮動小数点型Double
非参照Non-reference 参照渡しされます。By-reference.

適用対象

こちらもご覧ください