0

假设我有以下 C# 代码,它接受带有 IEnumVARIANT 接口的 COM 对象:

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

为了编组它,我需要添加对 CustomMarshalers.dll 库的引用。但是,与 with 不同的是mscorlib.dll,此库不是在AssemblyRef元数据表中引用,而是通过表在 blob 堆中引用FieldMarshal。为什么使用通过 blob 的引用?

4

1 回答 1

1

因为引用出现在 [attribute] 中。实例化属性类时使用的属性数据存储在 blob 表中。有关此答案的更多信息。

于 2013-10-17T17:51:24.893 回答