LocalBuilder Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir yöntem veya oluşturucu içindeki yerel değişkeni temsil eder.
public ref class LocalBuilder sealed : System::Reflection::LocalVariableInfo
public ref class LocalBuilder abstract : System::Reflection::LocalVariableInfo
public ref class LocalBuilder sealed : System::Runtime::InteropServices::_LocalBuilder
public ref class LocalBuilder sealed : System::Reflection::LocalVariableInfo, System::Runtime::InteropServices::_LocalBuilder
public sealed class LocalBuilder : System.Reflection.LocalVariableInfo
public abstract class LocalBuilder : System.Reflection.LocalVariableInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class LocalBuilder : System.Runtime.InteropServices._LocalBuilder
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class LocalBuilder : System.Reflection.LocalVariableInfo, System.Runtime.InteropServices._LocalBuilder
type LocalBuilder = class
inherit LocalVariableInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type LocalBuilder = class
interface _LocalBuilder
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type LocalBuilder = class
inherit LocalVariableInfo
interface _LocalBuilder
Public NotInheritable Class LocalBuilder
Inherits LocalVariableInfo
Public MustInherit Class LocalBuilder
Inherits LocalVariableInfo
Public NotInheritable Class LocalBuilder
Implements _LocalBuilder
Public NotInheritable Class LocalBuilder
Inherits LocalVariableInfo
Implements _LocalBuilder
- Devralma
- Devralma
-
LocalBuilder
- Öznitelikler
- Uygulamalar
Örnekler
Aşağıdaki örnek, bir dize döndüren ve Int32türünde bir parametresi olan Function1
adlı bir static
yöntemi (Visual Basic'teShared
) oluşturur. yönteminin gövdesinde, kod örneği iki yerel değişkeni temsil eden LocalBuilder nesneleri oluşturur ve yerel değişkenler için sembol bilgilerini ayarlar. yöntemi önemli bir şey yapmaz, ancak yöntem gövdesi bir parametreyi yerel değişkene depolamayı, sabit dizeyi yerel bir değişkene depolamayı ve yerel değişkeni yüklemeyi gösterir.
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Threading;
int main()
{
// Create an assembly.
AssemblyName^ myAssemblyName = gcnew AssemblyName;
myAssemblyName->Name = "SampleAssembly";
AssemblyBuilder^ myAssembly = Thread::GetDomain()->DefineDynamicAssembly(
myAssemblyName, AssemblyBuilderAccess::RunAndSave );
// Create a module. For a single-file assembly the module
// name is usually the same as the assembly name.
ModuleBuilder^ myModule = myAssembly->DefineDynamicModule(
myAssemblyName->Name, myAssemblyName->Name + ".dll", true );
// Define a public class 'Example'.
TypeBuilder^ myTypeBuilder = myModule->DefineType( "Example", TypeAttributes::Public );
// Create the 'Function1' public method, which takes an integer
// and returns a string.
MethodBuilder^ myMethod = myTypeBuilder->DefineMethod( "Function1",
MethodAttributes::Public | MethodAttributes::Static, String::typeid,
gcnew array<Type^> { int::typeid } );
// Generate IL for 'Function1'. The function body demonstrates
// assigning an argument to a local variable, assigning a
// constant string to a local variable, and putting the contents
// of local variables on the stack.
ILGenerator^ myMethodIL = myMethod->GetILGenerator();
// Create local variables named myString and myInt.
LocalBuilder^ myLB1 = myMethodIL->DeclareLocal( String::typeid );
myLB1->SetLocalSymInfo( "myString" );
Console::WriteLine( "local 'myString' type is: {0}", myLB1->LocalType );
LocalBuilder^ myLB2 = myMethodIL->DeclareLocal( int::typeid );
myLB2->SetLocalSymInfo( "myInt", 1, 2 );
Console::WriteLine( "local 'myInt' type is: {0}", myLB2->LocalType );
// Store the function argument in myInt.
myMethodIL->Emit( OpCodes::Ldarg_0 );
myMethodIL->Emit( OpCodes::Stloc_1 );
// Store a literal value in myString, and return the value.
myMethodIL->Emit( OpCodes::Ldstr, "string value" );
myMethodIL->Emit( OpCodes::Stloc_0 );
myMethodIL->Emit( OpCodes::Ldloc_0 );
myMethodIL->Emit( OpCodes::Ret );
// Create "Example" class.
Type^ myType1 = myTypeBuilder->CreateType();
Console::WriteLine( "'Example' is created." );
myAssembly->Save(myAssemblyName->Name + ".dll");
Console::WriteLine( "'{0}' is created.", myAssemblyName->Name + ".dll" );
// Invoke 'Function1' method of 'Example', passing the value 42.
Object^ myObject2 = myType1->InvokeMember( "Function1",
BindingFlags::InvokeMethod, nullptr, nullptr,
gcnew array<Object^> { 42 } );
Console::WriteLine( "Example::Function1 returned: {0}", myObject2 );
}
/* This code example produces the following output:
local 'myString' type is: System.String
local 'myInt' type is: System.Int32
'Example' is created.
'SampleAssembly.dll' is created.
Example::Function1 returned: string value
*/
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Threading;
class LocalBuilder_Sample
{
public static void Main()
{
// Create an assembly.
AssemblyName myAssemblyName = new AssemblyName();
myAssemblyName.Name = "SampleAssembly";
AssemblyBuilder myAssembly =
Thread.GetDomain().DefineDynamicAssembly(myAssemblyName,
AssemblyBuilderAccess.RunAndSave);
// Create a module. For a single-file assembly the module
// name is usually the same as the assembly name.
ModuleBuilder myModule =
myAssembly.DefineDynamicModule(myAssemblyName.Name,
myAssemblyName.Name + ".dll", true);
// Define a public class 'Example'.
TypeBuilder myTypeBuilder =
myModule.DefineType("Example", TypeAttributes.Public);
// Create the 'Function1' public method, which takes an integer
// and returns a string.
MethodBuilder myMethod = myTypeBuilder.DefineMethod("Function1",
MethodAttributes.Public | MethodAttributes.Static,
typeof(String), new Type[] { typeof(int) });
// Generate IL for 'Function1'. The function body demonstrates
// assigning an argument to a local variable, assigning a
// constant string to a local variable, and putting the contents
// of local variables on the stack.
ILGenerator myMethodIL = myMethod.GetILGenerator();
// Create local variables named myString and myInt.
LocalBuilder myLB1 = myMethodIL.DeclareLocal(typeof(string));
myLB1.SetLocalSymInfo("myString");
Console.WriteLine("local 'myString' type is: {0}", myLB1.LocalType);
LocalBuilder myLB2 = myMethodIL.DeclareLocal(typeof(int));
myLB2.SetLocalSymInfo("myInt", 1, 2);
Console.WriteLine("local 'myInt' type is: {0}", myLB2.LocalType);
// Store the function argument in myInt.
myMethodIL.Emit(OpCodes.Ldarg_0 );
myMethodIL.Emit(OpCodes.Stloc_1 );
// Store a literal value in myString, and return the value.
myMethodIL.Emit(OpCodes.Ldstr, "string value" );
myMethodIL.Emit(OpCodes.Stloc_0 );
myMethodIL.Emit(OpCodes.Ldloc_0 );
myMethodIL.Emit(OpCodes.Ret );
// Create "Example" class.
Type myType1 = myTypeBuilder.CreateType();
Console.WriteLine("'Example' is created.");
myAssembly.Save(myAssemblyName.Name + ".dll");
Console.WriteLine( "'{0}' is created.", myAssemblyName.Name + ".dll" );
// Invoke 'Function1' method of 'Example', passing the value 42.
Object myObject2 = myType1.InvokeMember("Function1",
BindingFlags.InvokeMethod, null, null, new Object[] { 42 });
Console.WriteLine("Example.Function1 returned: {0}", myObject2);
}
}
/* This code example produces the following output:
local 'myString' type is: System.String
local 'myInt' type is: System.Int32
'Example' is created.
'SampleAssembly.dll' is created.
Example.Function1 returned: string value
*/
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Threading
Class LocalBuilder_Sample
Public Shared Sub Main()
' Create an assembly.
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "SampleAssembly"
Dim myAssembly As AssemblyBuilder = _
Thread.GetDomain().DefineDynamicAssembly( myAssemblyName, _
AssemblyBuilderAccess.RunAndSave )
' Create a module. For a single-file assembly the module
' name is usually the same as the assembly name.
Dim myModule As ModuleBuilder = _
myAssembly.DefineDynamicModule(myAssemblyName.Name, _
myAssemblyName.Name & ".dll", True)
' Define a public class 'Example'.
Dim myTypeBuilder As TypeBuilder = _
myModule.DefineType("Example", TypeAttributes.Public)
' Create the 'Function1' public method, which takes an Integer
' and returns a string.
Dim myMethod As MethodBuilder = myTypeBuilder.DefineMethod("Function1", _
MethodAttributes.Public Or MethodAttributes.Static, _
GetType(String), New Type() { GetType(Integer) })
' Generate IL for 'Function1'. The function body demonstrates
' assigning an argument to a local variable, assigning a
' constant string to a local variable, and putting the contents
' of local variables on the stack.
Dim myMethodIL As ILGenerator = myMethod.GetILGenerator()
' Create local variables named myString and myInt.
Dim myLB1 As LocalBuilder = myMethodIL.DeclareLocal(GetType(String))
myLB1.SetLocalSymInfo("myString")
Console.WriteLine("local 'myString' type is: {0}", myLB1.LocalType)
Dim myLB2 As LocalBuilder = myMethodIL.DeclareLocal(GetType(Integer))
myLB2.SetLocalSymInfo("myInt", 1, 2)
Console.WriteLine("local 'myInt' type is: {0}", myLB2.LocalType)
' Store the function argument in myInt.
myMethodIL.Emit(OpCodes.Ldarg_0 )
myMethodIL.Emit(OpCodes.Stloc_1 )
' Store a literal value in myString, and return the value.
myMethodIL.Emit(OpCodes.Ldstr, "string value" )
myMethodIL.Emit(OpCodes.Stloc_0 )
myMethodIL.Emit(OpCodes.Ldloc_0 )
myMethodIL.Emit(OpCodes.Ret )
' Create "Example" class.
Dim myType1 As Type = myTypeBuilder.CreateType()
Console.WriteLine("'Example' is created.")
myAssembly.Save(myAssemblyName.Name & ".dll")
Console.WriteLine( "'{0}' is created.", myAssemblyName.Name & ".dll" )
' Invoke 'Function1' method of 'Example', passing the value 42.
Dim myObject2 As Object = myType1.InvokeMember("Function1", _
BindingFlags.InvokeMethod, Nothing, Nothing, New Object() { 42 })
Console.WriteLine("Example.Function1 returned: {0}", myObject2)
End Sub
End Class
' This code example produces the following output:
'
'local 'myString' type is: System.String
'local 'myInt' type is: System.Int32
''Example' is created.
''SampleAssembly.dll' is created.
'Example.Function1 returned: string value
Açıklamalar
LocalBuilder
nesnesi DeclareLocal yöntemi kullanılarak tanımlanabilir.
Oluşturucular
LocalBuilder() |
LocalBuilder sınıfının yeni bir örneğini başlatır. |
Özellikler
IsPinned |
Yerel değişken tarafından başvurulan nesnenin belleğe sabitlenip sabitlenmediğini gösteren bir değer alır. |
LocalIndex |
Yöntem gövdesindeki yerel değişkenin sıfır tabanlı dizinini alır. |
LocalType |
Yerel değişkenin türünü alır. |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
SetLocalSymInfo(String) |
Bu yerel değişkenin adını ayarlar. |
SetLocalSymInfo(String, Int32, Int32) |
Bu yerel değişkenin adını ve sözcüksel kapsamını ayarlar. |
SetLocalSymInfoCore(String) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu yerel değişkenin adını ayarlar. |
ToString() |
Yerel değişkeni açıklayan, kullanıcı tarafından okunabilir bir dize döndürür. (Devralındığı yer: LocalVariableInfo) |
ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
_LocalBuilder.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Bir ad kümesini ilgili dağıtım tanımlayıcıları kümesiyle eşler. |
_LocalBuilder.GetTypeInfo(UInt32, UInt32, IntPtr) |
Bir nesnenin tür bilgilerini alır ve daha sonra arabirim için tür bilgilerini almak için kullanılabilir. |
_LocalBuilder.GetTypeInfoCount(UInt32) |
Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 veya 1). |
_LocalBuilder.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bir nesne tarafından kullanıma sunulan özelliklere ve yöntemlere erişim sağlar. |