英語で読む

次の方法で共有


Type.DefaultBinder プロパティ

定義

既定のバインダーへの参照を取得します。このバインダーは、InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) によって呼び出される適切なメンバーを選択するための内部規則を実装します。

C#
public static System.Reflection.Binder DefaultBinder { get; }

プロパティ値

システムで使用される既定のバインダーへの参照。

次の例では、 プロパティから既定のバインダーを DefaultBinder 取得し、 値を パラメーターとして に渡すことによって MyClass の DefaultBinder メンバーを InvokeMember呼び出します。

C#
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");
        }	
    }
}

注釈

共通言語ランタイムで提供される既定のバインダーは、最も特殊な状況以外のすべての状況で適用できます。 指定された既定のバインダーとは異なる規則に従うバインダーが必要な場合は、 クラスから派生した型を Binder 定義し、オーバーロードの 1 つのパラメーターを使用してその binder 型のインスタンスを InvokeMember 渡します。

リフレクションは、共通型システムのアクセシビリティ規則をモデル化します。 たとえば、呼び出し元が同じアセンブリ内にある場合、呼び出し元は内部メンバーに対する特別なアクセス許可を必要としません。 それ以外の場合、呼び出し元には が必要 ReflectionPermissionです。 これは、保護されているメンバー、プライベートメンバーなどの参照と一致します。

一般的な原則は、 ChangeType 拡大変換のみを実行する必要があり、データが失われることはありません。 拡大変換の例として、32 ビット符号付き整数の値を 64 ビット符号付き整数の値に変換します。 これは縮小変換と区別され、データが失われる可能性があります。 縮小変換の例として、64 ビット符号付き整数を 32 ビット符号付き整数に変換します。

次の表に、既定のバインダーでサポートされる変換の一覧を示します。

ソースの種類 ターゲットの種類
任意の型 その基本型。
任意の型 実装するインターフェイス。
Char Unt16、UInt32、Int32、UInt64、Int64、Single、Double
Byte Char、Unt16、Int16、UInt32、Int32、UInt64、Int64、Single、Double
SByte Int16、Int32、Int64、Single、Double
UInt16 UInt32、Int32、UInt64、Int64、Single、Double
Int16 Int32、Int64、Single、Double
UInt32 UInt64、Int64、Single、Double
Int32 Int64、Single、Double
UInt64 Single、Double
Int64 Single、Double
Single Double
非参照 参照による。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

こちらもご覧ください