TypeLibConverter.ConvertAssemblyToTypeLib(Assembly, String, TypeLibExporterFlags, ITypeLibExporterNotifySink) TypeLibConverter.ConvertAssemblyToTypeLib(Assembly, String, TypeLibExporterFlags, ITypeLibExporterNotifySink) TypeLibConverter.ConvertAssemblyToTypeLib(Assembly, String, TypeLibExporterFlags, ITypeLibExporterNotifySink) Method

定义

将程序集转换为 COM 类型库。Converts an assembly to a COM type library.

public:
 virtual System::Object ^ ConvertAssemblyToTypeLib(System::Reflection::Assembly ^ assembly, System::String ^ strTypeLibName, System::Runtime::InteropServices::TypeLibExporterFlags flags, System::Runtime::InteropServices::ITypeLibExporterNotifySink ^ notifySink);
public object ConvertAssemblyToTypeLib (System.Reflection.Assembly assembly, string strTypeLibName, System.Runtime.InteropServices.TypeLibExporterFlags flags, System.Runtime.InteropServices.ITypeLibExporterNotifySink notifySink);
abstract member ConvertAssemblyToTypeLib : System.Reflection.Assembly * string * System.Runtime.InteropServices.TypeLibExporterFlags * System.Runtime.InteropServices.ITypeLibExporterNotifySink -> obj
override this.ConvertAssemblyToTypeLib : System.Reflection.Assembly * string * System.Runtime.InteropServices.TypeLibExporterFlags * System.Runtime.InteropServices.ITypeLibExporterNotifySink -> obj

参数

assembly
Assembly Assembly Assembly

要转换的程序集。The assembly to convert.

strTypeLibName
String String String

产生的类型库的文件名。The file name of the resulting type library.

flags
TypeLibExporterFlags TypeLibExporterFlags TypeLibExporterFlags

指示任何特殊设置的 TypeLibExporterFlags 值。A TypeLibExporterFlags value indicating any special settings.

notifySink
ITypeLibExporterNotifySink ITypeLibExporterNotifySink ITypeLibExporterNotifySink

由调用方实现的 ITypeLibExporterNotifySink 接口。The ITypeLibExporterNotifySink interface implemented by the caller.

返回

一个实现 ITypeLib 接口的对象。An object that implements the ITypeLib interface.

实现

示例

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Runtime::InteropServices;

[ComImport,
GuidAttribute("00020406-0000-0000-C000-000000000046"),
InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIUnknown),
ComVisible(false)]
interface class UCOMICreateITypeLib
{
   void CreateTypeInfo();
   void SetName();
   void SetVersion();
   void SetGuid();
   void SetDocString();
   void SetHelpFileName();
   void SetHelpContext();
   void SetLcid();
   void SetLibFlags();
   void SaveAllChanges();
};

public ref class ConversionEventHandler: public ITypeLibExporterNotifySink
{
public:
   virtual void ReportEvent( ExporterEventKind eventKind, int eventCode, String^ eventMsg )
   {
      // Handle the warning event here.
   }

   virtual Object^ ResolveRef( Assembly^ a )
   {
      // Resolve the reference here and return a correct type library.
      return nullptr;
   }
};

int main()
{
   Assembly^ a = Assembly::LoadFrom( "MyAssembly.dll" );
   TypeLibConverter^ converter = gcnew TypeLibConverter;
   ConversionEventHandler^ eventHandler = gcnew ConversionEventHandler;
   UCOMICreateITypeLib^ typeLib = dynamic_cast<UCOMICreateITypeLib^>(converter->ConvertAssemblyToTypeLib( a, "MyTypeLib.dll", static_cast<TypeLibExporterFlags>(0), eventHandler ));
   typeLib->SaveAllChanges();
}
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.InteropServices;

[ComImport,
GuidAttribute( "00020406-0000-0000-C000-000000000046" ),
InterfaceTypeAttribute( ComInterfaceType.InterfaceIsIUnknown ),
ComVisible( false )]
public interface UCOMICreateITypeLib
{
    void CreateTypeInfo();
    void SetName();
    void SetVersion();
    void SetGuid();
    void SetDocString();
    void SetHelpFileName();
    void SetHelpContext();
    void SetLcid();
    void SetLibFlags();
    void SaveAllChanges();
}

public class App
{
    public static void Main()
    {
        Assembly asm = Assembly.LoadFrom( "MyAssembly.dll" );
        TypeLibConverter converter = new TypeLibConverter();
        ConversionEventHandler eventHandler = new ConversionEventHandler();
		
        UCOMICreateITypeLib typeLib = (UCOMICreateITypeLib)converter.ConvertAssemblyToTypeLib( asm, "MyTypeLib.dll", 0, eventHandler );	
        typeLib.SaveAllChanges();
    }
}

public class ConversionEventHandler : ITypeLibExporterNotifySink
{
    public void ReportEvent( ExporterEventKind eventKind, int eventCode, string eventMsg )
    {
        // Handle the warning event here.
    }
	
    public Object ResolveRef( Assembly asm )
    {
        // Resolve the reference here and return a correct type library.
        return null; 
    }	
}
Imports System
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Runtime.InteropServices

<ComImport(), GuidAttribute("00020406-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown), ComVisible(False)> _
Public Interface UCOMICreateITypeLib
    Sub CreateTypeInfo()
    Sub SetName()
    Sub SetVersion()
    Sub SetGuid()
    Sub SetDocString()
    Sub SetHelpFileName()
    Sub SetHelpContext()
    Sub SetLcid()
    Sub SetLibFlags()
    Sub SaveAllChanges()
End Interface 'UCOMICreateITypeLib

Public Class App

    Public Shared Sub Main()
        Dim asm As [Assembly] = [Assembly].LoadFrom("MyAssembly.dll")
        Dim converter As New TypeLibConverter()
        Dim eventHandler As New ConversionEventHandler()

        Dim typeLib As UCOMICreateITypeLib = CType(converter.ConvertAssemblyToTypeLib(asm, "MyTypeLib.dll", 0, eventHandler), UCOMICreateITypeLib)
        typeLib.SaveAllChanges()
    End Sub 'Main
End Class 'App

Public Class ConversionEventHandler
    Implements ITypeLibExporterNotifySink

    Public Sub ReportEvent(ByVal eventKind As ExporterEventKind, ByVal eventCode As Integer, ByVal eventMsg As String) Implements ITypeLibExporterNotifySink.ReportEvent
        ' Handle the warning event here.
    End Sub 'ReportEvent

    Public Function ResolveRef(ByVal asm As [Assembly]) As [Object] Implements ITypeLibExporterNotifySink.ResolveRef
        ' Resolve the reference here and return a correct type library.
        Return Nothing
    End Function 'ResolveRef

End Class 'ConversionEventHandler

注解

有关详细信息ITypeLib,请参阅 MSDN library 中的其现有文档。For more information on ITypeLib, please see its existing documentation in the MSDN library.

安全性

SecurityPermission
若要调用非托管的代码的权限。for permission to call unmanaged code. 安全操作: 需求。Security Action: Demand. 关联的枚举: UnmanagedCodeAssociated Enumeration: UnmanagedCode

适用于