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

时间:2013-10-17 17:10:23

标签: c# .net clr marshalling com-interop

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

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

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

1 个答案:

答案 0 :(得分:1)

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