C# 封送IEnumVARIANT:在blob中引用CustomMarshalers.dll?

C# 封送IEnumVARIANT:在blob中引用CustomMarshalers.dll?,c#,.net,clr,marshalling,com-interop,C#,.net,Clr,Marshalling,Com Interop,假设我有以下C#代码,它接受带有IEnumVARIANT接口的COM对象: public void EnumeratorParameter( [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(EnumeratorToEnumVariantMarshaler))] IEnumerator enumerator) { } 要封送它,我需要添加对CustomMarshalers.dll库

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

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

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

因为引用出现在[属性]中。实例化属性类时使用的属性数据存储在blob表中。更多关于这方面的信息,请参阅