Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetEnumerator()

unsafe System.Collections.IEnumerator System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch.GetEnumerator ( )
inline

Implements System.Collections.IEnumerable.

Definition at line 22 of file EnumerableViewOfDispatch.cs.

23 {
24 System.Runtime.CompilerServices.Unsafe.SkipInit(out Variant variant);
25 void* value = &variant;
26 DISPPARAMS pDispParams = default(DISPPARAMS);
27 Guid riid = Guid.Empty;
28 Dispatch.Invoke(-4, ref riid, 1, InvokeFlags.DISPATCH_METHOD | InvokeFlags.DISPATCH_PROPERTYGET, ref pDispParams, new IntPtr(value), IntPtr.Zero, IntPtr.Zero);
29 IntPtr intPtr = IntPtr.Zero;
30 try
31 {
32 object obj = variant.ToObject();
33 if (!(obj is IEnumVARIANT o))
34 {
35 throw new InvalidOperationException(SR.InvalidOp_InvalidNewEnumVariant);
36 }
37 intPtr = Marshal.GetIUnknownForObject(o);
38 return (System.Collections.IEnumerator)EnumeratorToEnumVariantMarshaler.GetInstance(null).MarshalNativeToManaged(intPtr);
39 }
40 finally
41 {
42 variant.Clear();
43 if (intPtr != IntPtr.Zero)
44 {
45 Marshal.Release(intPtr);
46 }
47 }
48 }
void Invoke(int dispIdMember, ref Guid riid, int lcid, InvokeFlags wFlags, ref DISPPARAMS pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr)

References System.Runtime.InteropServices.CustomMarshalers.EnumerableViewOfDispatch.Dispatch, System.Guid.Empty, System.Runtime.InteropServices.CustomMarshalers.EnumeratorToEnumVariantMarshaler.GetInstance(), System.Runtime.InteropServices.Marshal.GetIUnknownForObject(), System.SR.InvalidOp_InvalidNewEnumVariant, System.Runtime.InteropServices.IDispatch.Invoke(), System.obj, System.Runtime.InteropServices.Marshal.Release(), System.value, and System.IntPtr.Zero.