Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo TypeLibConverter.ConvertTypeLibToAssembly (Object, String, TypeLibImporterFlags, ITypeLibImporterNotifySink, Byte[], StrongNameKeyPair, String, Version)

 

Data di pubblicazione: ottobre 2016

Converte una libreria dei tipi COM in un assembly.

Spazio dei nomi:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public AssemblyBuilder ConvertTypeLibToAssembly(
	object typeLib,
	string asmFileName,
	TypeLibImporterFlags flags,
	ITypeLibImporterNotifySink notifySink,
	byte[] publicKey,
	StrongNameKeyPair keyPair,
	string asmNamespace,
	Version asmVersion
)

Parametri

typeLib
Type: System.Object

Oggetto che implementa l'interfaccia ITypeLib.

asmFileName
Type: System.String

Il nome file dell'assembly risultante.

flags
Type: System.Runtime.InteropServices.TypeLibImporterFlags

Oggetto TypeLibImporterFlags valore che indica eventuali impostazioni speciali.

notifySink
Type: System.Runtime.InteropServices.ITypeLibImporterNotifySink

ITypeLibImporterNotifySink interfaccia implementata dal chiamante.

publicKey
Type: System.Byte[]

Oggetto byte matrice che contiene la chiave pubblica.

keyPair
Type: System.Reflection.StrongNameKeyPair

Oggetto StrongNameKeyPair contenente la coppia di chiavi di crittografia pubblica e privata.

asmNamespace
Type: System.String

Lo spazio dei nomi per l'assembly risultante.

asmVersion
Type: System.Version

La versione dell'assembly risultante. Se null, viene utilizzata la versione della libreria dei tipi.

Valore restituito

Type: System.Reflection.Emit.AssemblyBuilder

Un AssemblyBuilder oggetto che contiene la libreria di tipo convertito.

Exception Condition
ArgumentNullException

typeLib è null.

-oppure-

asmFileName è null.

-oppure-

notifySink è null.

ArgumentException

Il parametro asmFileName è una stringa vuota.

-oppure-

asmFileName è più lungo di MAX_PATH.

InvalidOperationException

flags non è PrimaryInteropAssembly.

-oppure-

publicKey e keyPair sono null.

ReflectionTypeLoadException

I metadati generati sono impedire il caricamento di tutti i tipi di errori.

Se non si desidera generare un nome sicuro per l'assembly, è valida per publicKey e keyPair da null, purché flags non è uguale a TypeLibImporterFlags.PrimaryInteropAssembly. In caso contrario, è necessario specificare almeno uno di questi parametri. Se publicKey è null, la chiave pubblica in keyPair verrà impostata nei metadati del manifesto dell'assembly di destinazione e verrà generata una firma in base al contenuto dell'assembly. Se keyPair è null, publicKey verrà impostata nei metadati del manifesto dell'assembly di destinazione e verrà generata alcuna firma. Specificare entrambi i parametri non è in genere utile e può comportare una firma non valida.

Per ulteriori informazioni su ITypeLib, consultare la relativa documentazione disponibile in MSDN library.

using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.InteropServices;


public class App
{
	private enum RegKind
	{
		RegKind_Default = 0,
		RegKind_Register = 1,
		RegKind_None = 2
	}

	[ DllImport( "oleaut32.dll", CharSet = CharSet.Unicode, PreserveSig = false )]
	private static extern void LoadTypeLibEx( String strTypeLibName, RegKind regKind, 
		[ MarshalAs( UnmanagedType.Interface )] out Object typeLib );

	public static void Main()
	{
		Object typeLib;
		LoadTypeLibEx( "SHDocVw.dll", RegKind.RegKind_None, out typeLib ); 

		if( typeLib == null )
		{
			Console.WriteLine( "LoadTypeLibEx failed." );
			return;
		}

		TypeLibConverter converter = new TypeLibConverter();
		ConversionEventHandler eventHandler = new ConversionEventHandler();
		AssemblyBuilder asm = converter.ConvertTypeLibToAssembly( typeLib, "ExplorerLib.dll", 0, eventHandler, null, null, null, null );	
		asm.Save( "ExplorerLib.dll" );
	}
}

public class ConversionEventHandler : ITypeLibImporterNotifySink
{
	public void ReportEvent( ImporterEventKind eventKind, int eventCode, string eventMsg )
	{
		// handle warning event here...
	}

	public Assembly ResolveRef( object typeLib )
	{
		// resolve reference here and return a correct assembly...
		return null; 
	}	
}

SecurityPermission

for permission to call unmanaged code.

Security Action: Demand.

Associated Enumeration: F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: