@@ -363,6 +363,7 @@ public ArrayMarshalType(NativeType elementType, int paramNum, int numElems, int
363363 public sealed class CustomMarshalType : MarshalType {
364364 UTF8String guid ;
365365 UTF8String nativeTypeName ;
366+ UTF8String custMarshalerTypeName ;
366367 ITypeDefOrRef custMarshaler ;
367368 UTF8String cookie ;
368369
@@ -382,8 +383,18 @@ public UTF8String NativeTypeName {
382383 set => nativeTypeName = value ;
383384 }
384385
386+ /// <summary>
387+ /// Gets/sets the custom marshaller type name string
388+ /// <remarks>This property is used when writing only when <see cref="CustomMarshaler"/> is null.</remarks>
389+ /// </summary>
390+ public UTF8String CustomMarshalerTypeName {
391+ get => custMarshalerTypeName ;
392+ set => custMarshalerTypeName = value ;
393+ }
394+
385395 /// <summary>
386396 /// Gets/sets the custom marshaler
397+ /// <remarks>This property takes priority over <see cref="CustomMarshalerTypeName"/> when writing.</remarks>
387398 /// </summary>
388399 public ITypeDefOrRef CustomMarshaler {
389400 get => custMarshaler ;
@@ -427,7 +438,7 @@ public CustomMarshalType(UTF8String guid, UTF8String nativeTypeName)
427438 /// </summary>
428439 /// <param name="guid">GUID string</param>
429440 /// <param name="nativeTypeName">Native type name string</param>
430- /// <param name="custMarshaler">Custom marshaler name string </param>
441+ /// <param name="custMarshaler">Custom marshaler type </param>
431442 public CustomMarshalType ( UTF8String guid , UTF8String nativeTypeName , ITypeDefOrRef custMarshaler )
432443 : this ( guid , nativeTypeName , custMarshaler , null ) {
433444 }
@@ -437,18 +448,35 @@ public CustomMarshalType(UTF8String guid, UTF8String nativeTypeName, ITypeDefOrR
437448 /// </summary>
438449 /// <param name="guid">GUID string</param>
439450 /// <param name="nativeTypeName">Native type name string</param>
440- /// <param name="custMarshaler">Custom marshaler name string </param>
451+ /// <param name="custMarshaler">Custom marshaler type </param>
441452 /// <param name="cookie">Cookie string</param>
442453 public CustomMarshalType ( UTF8String guid , UTF8String nativeTypeName , ITypeDefOrRef custMarshaler , UTF8String cookie )
454+ : this ( guid , nativeTypeName , null , custMarshaler , cookie ) {
455+ }
456+
457+ /// <summary>
458+ /// Constructor
459+ /// </summary>
460+ /// <param name="guid">GUID string</param>
461+ /// <param name="nativeTypeName">Native type name string</param>
462+ /// <param name="custMarshalerTypeName">Custom marshaler name string</param>
463+ /// <param name="custMarshaler">Custom marshaler type</param>
464+ /// <param name="cookie">Cookie string</param>
465+ public CustomMarshalType ( UTF8String guid , UTF8String nativeTypeName , UTF8String custMarshalerTypeName , ITypeDefOrRef custMarshaler , UTF8String cookie )
443466 : base ( NativeType . CustomMarshaler ) {
444467 this . guid = guid ;
445468 this . nativeTypeName = nativeTypeName ;
469+ this . custMarshalerTypeName = custMarshalerTypeName ;
446470 this . custMarshaler = custMarshaler ;
447471 this . cookie = cookie ;
448472 }
449473
450474 /// <inheritdoc/>
451- public override string ToString ( ) => $ "{ nativeType } ({ guid } , { nativeTypeName } , { custMarshaler } , { cookie } )";
475+ public override string ToString ( ) {
476+ if ( custMarshaler is not null )
477+ return $ "{ nativeType } ({ guid } , { nativeTypeName } , { custMarshaler } , { cookie } )";
478+ return $ "{ nativeType } ({ guid } , { nativeTypeName } , { custMarshalerTypeName } , { cookie } )";
479+ }
452480 }
453481
454482 /// <summary>
0 commit comments