Type.DefaultBinder Özellik

Tanım

Tarafından çağrılacak uygun üyeleri seçmek için dahili kuralları uygulayan varsayılan cilde bir başvuru alır 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

Özellik Değeri

Binder

Sistem tarafından kullanılan varsayılan cilde bir başvuru.A reference to the default binder used by the system.

Örnekler

Aşağıdaki örnek, özelliğinden varsayılan cildi alır DefaultBinder ve DefaultBinder değeri parametresi olarak geçirerek MyClass üyesini çağırır InvokeMember .The 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.Reflection

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

    Class [MyClass]

        Public Sub HelloWorld()
            Console.WriteLine("Hello World")
        End Sub
    End Class
End Class

Açıklamalar

Ortak dil çalışma zamanı ile birlikte sunulan varsayılan bağlayıcı, en özel koşullarda geçerlidir.The default binder provided with the common language runtime is applicable in all but the most specialized circumstances. Sağlanan varsayılan Ciltçideki uygulamalardan farklı olan kurallara uyan bir cilde ihtiyacınız varsa, sınıftan türetilmiş bir tür tanımlayın Binder ve bu türün bir örneğini aşırı yüklerden binder birinin parametresini kullanarak geçirin 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.

Yansıma, ortak tür sisteminin erişilebilirlik kurallarını modeller.Reflection models the accessibility rules of the common type system. Örneğin, arayan aynı derlemede ise, çağıranın iç Üyeler için özel izinleri olması gerekmez.For example, if the caller is in the same assembly, the caller does not need special permissions for internal members. Aksi takdirde, çağıranın ihtiyacı vardır ReflectionPermission .Otherwise, the caller needs ReflectionPermission. Bu, korunan, özel ve benzeri üyelerin aranması ile tutarlıdır.This is consistent with lookup of members that are protected, private, and so on.

Genel ilke, ChangeType verileri asla kaybetmez yalnızca genişletme dönüştürmeleri gerçekleştirmelidir.The general principle is that ChangeType should perform only widening conversions, which never lose data. Genişleyen dönüştürme örneği, 32 bitlik işaretli bir tamsayı olan bir değeri, 64 bit işaretli bir tamsayı olan değere dönüştürmektir.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. Bu, veri kaybı olabilecek bir daraltma dönüşümden ayırt edilir.This is distinguished from a narrowing conversion, which may lose data. Daraltma dönüştürmesi örneği, 64 bitlik işaretli bir tamsayıyı 32 bit işaretli bir tamsayıya dönüştürmektir.An example of a narrowing conversion is converting a 64-bit signed integer to a 32-bit signed integer.

Aşağıdaki tabloda varsayılan bağlayıcı tarafından desteklenen dönüşümler listelenmektedir.The following table lists the conversions supported by the default binder.

Kaynak TürüSource Type Hedef türüTarget Type
Herhangi bir türAny type Temel türü.Its base type.
Herhangi bir türAny type Uyguladığı arabirim.The interface it implements.
CharChar Unt16, UInt32, Int32, UInt64, Int64, Single, DoubleUnt16, UInt32, Int32, UInt64, Int64, Single, Double
BaytByte 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 Tek, ÇiftSingle, Double
Int64Int64 Tek, ÇiftSingle, Double
TekSingle ÇiftDouble
Başvuru olmayanNon-reference Başvuruya göre.By-reference.

Şunlara uygulanır

Ayrıca bkz.