本文整理匯總了VB.NET中System.Reflection.Emit.LocalBuilder類的典型用法代碼示例。如果您正苦於以下問題:VB.NET LocalBuilder類的具體用法?VB.NET LocalBuilder怎麽用?VB.NET LocalBuilder使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了LocalBuilder類的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的VB.NET代碼示例。
示例1: LocalBuilder_Sample
' 導入命名空間
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
輸出:
local 'myString' type is: System.String local 'myInt' type is: System.Int32 Example' is created. SampleAssembly.dll' is created. Example.Function1 returned: string value