當前位置: 首頁>>代碼示例>>C#>>正文


C# RuntimeTypeHandle.MakeArrayType方法代碼示例

本文整理匯總了C#中System.RuntimeTypeHandle.MakeArrayType方法的典型用法代碼示例。如果您正苦於以下問題:C# RuntimeTypeHandle.MakeArrayType方法的具體用法?C# RuntimeTypeHandle.MakeArrayType怎麽用?C# RuntimeTypeHandle.MakeArrayType使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在System.RuntimeTypeHandle的用法示例。


在下文中一共展示了RuntimeTypeHandle.MakeArrayType方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: GetTypeHelper

 internal static unsafe IntPtr GetTypeHelper(IntPtr th, IntPtr pGenericArgs, int cGenericArgs, IntPtr pModifiers, int cModifiers)
 {
     Type runtimeType = new RuntimeTypeHandle(th.ToPointer()).GetRuntimeType();
     if (runtimeType == null)
     {
         return th;
     }
     if (cGenericArgs > 0)
     {
         Type[] typeArguments = new Type[cGenericArgs];
         void** voidPtr = (void**) pGenericArgs.ToPointer();
         for (int i = 0; i < typeArguments.Length; i++)
         {
             RuntimeTypeHandle handle = new RuntimeTypeHandle((void*) Marshal.ReadIntPtr((IntPtr) voidPtr, i * sizeof(void*)));
             typeArguments[i] = Type.GetTypeFromHandle(handle);
             if (typeArguments[i] == null)
             {
                 return IntPtr.Zero;
             }
         }
         runtimeType = runtimeType.MakeGenericType(typeArguments);
     }
     if (cModifiers > 0)
     {
         int* numPtr = (int*) pModifiers.ToPointer();
         for (int j = 0; j < cModifiers; j++)
         {
             if (((byte) Marshal.ReadInt32((IntPtr) numPtr, j * 4)) == 15)
             {
                 runtimeType = runtimeType.MakePointerType();
             }
             else if (((byte) Marshal.ReadInt32((IntPtr) numPtr, j * 4)) == 0x10)
             {
                 runtimeType = runtimeType.MakeByRefType();
             }
             else if (((byte) Marshal.ReadInt32((IntPtr) numPtr, j * 4)) == 0x1d)
             {
                 runtimeType = runtimeType.MakeArrayType();
             }
             else
             {
                 runtimeType = runtimeType.MakeArrayType(Marshal.ReadInt32((IntPtr) numPtr, ++j * 4));
             }
         }
     }
     return runtimeType.GetTypeHandleInternal().Value;
 }
開發者ID:randomize,項目名稱:VimConfig,代碼行數:47,代碼來源:RuntimeTypeHandle.cs


注:本文中的System.RuntimeTypeHandle.MakeArrayType方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。