Add the MethodImplAttributes.PreserveSig flag to the method implementation flags : MethodInfo « Reflection « VB.Net Tutorial

Home
VB.Net Tutorial
1.Language Basics
2.Data Type
3.Operator
4.Statements
5.Date Time
6.Class Module
7.Development
8.Collections
9.Generics
10.Attributes
11.Event
12.LINQ
13.Stream File
14.GUI
15.GUI Applications
16.Windows Presentation Foundation
17.2D Graphics
18.I18N Internationlization
19.Reflection
20.Regular Expressions
21.Security
22.Socket Network
23.Thread
24.Windows
25.XML
26.Database ADO.net
27.Design Patterns
VB.Net
VB.Net by API
VB.Net Tutorial » Reflection » MethodInfo 
19.2.5.Add the MethodImplAttributes.PreserveSig flag to the method implementation flags
Imports System
Imports System.Text
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Runtime.InteropServices

Public Class Example

    Public Shared Sub Main() 
        Dim asmName As New AssemblyName("YourAssemblyName")
        Dim dynamicAsm As AssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName,AssemblyBuilderAccess.RunAndSave)

        Dim dynamicMod As ModuleBuilder = dynamicAsm.DefineDynamicModule(asmName.Name, asmName.Name & ".dll")

        Dim tb As TypeBuilder = dynamicMod.DefineType("MyType",TypeAttributes.Public Or TypeAttributes.UnicodeClass)

        Dim mb As MethodBuilder = tb.DefinePInvokeMethod("GetTickCount", _
            "Kernel32.dll", _
            MethodAttributes.Public Or MethodAttributes.Static Or MethodAttributes.PinvokeImpl, _
            CallingConventions.Standard, _
            GetType(Integer), _
            Type.EmptyTypes, _
            CallingConvention.Winapi, _
            CharSet.Ansi)

        mb.SetImplementationFlags(mb.GetMethodImplementationFlags() Or MethodImplAttributes.PreserveSig)

        Dim As Type = tb.CreateType()

        Dim mi As MethodInfo = t.GetMethod("GetTickCount")
        Console.WriteLine(mi.Invoke(Nothing, Nothing))

        Console.WriteLine("Saving: " & asmName.Name & ".dll")
        dynamicAsm.Save(asmName.Name & ".dll")

    End Sub  
End Class
19.2.MethodInfo
19.2.1.Get a parameterless method named MethodA for that type, and executes the method.
19.2.2.Use Reflection to get all method names
19.2.3.Use Reflection to get all member names
19.2.4.Use the DefinePInvokeMethod method to create a PInvoke method
19.2.5.Add the MethodImplAttributes.PreserveSig flag to the method implementation flags
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.