0

IEnumVARIANT インターフェイスを持つ COM オブジェクトを受け入れる次の C# コードがあるとします。

public void EnumeratorParameter( 
    [MarshalAs(UnmanagedType.CustomMarshaler, 
     MarshalTypeRef = typeof(EnumeratorToEnumVariantMarshaler))] 
    IEnumerator enumerator) { }

マーシャリングするには、CustomMarshalers.dll ライブラリへの参照を追加する必要があります。ただし、 とは異なりmscorlib.dll、このライブラリは withAssemblyRefメタデータ テーブルではなく、テーブルを介して BLOB ヒープで参照されFieldMarshalます。ブロブ経由の参照が使用されるのはなぜですか?

4

1 に答える 1

1

参照が [attribute] に表示されるためです。属性クラスがインスタンス化されるときに使用される属性データは、BLOB テーブルに格納されます。詳細については、この回答を参照してください。

于 2013-10-17T17:51:24.893 に答える