Exemplo n.º 1
0
        static TypeReference CreateSpecs(TypeReference type, Type type_info)
        {
            type = TryCreateGenericInstanceType(type, type_info);

            var specs = type_info.specs;

            if (specs.IsNullOrEmpty())
            {
                return(type);
            }

            for (int i = 0; i < specs.Length; i++)
            {
                switch (specs [i])
                {
                case Type.Ptr:
                    type = new PointerType(type);
                    break;

                case Type.ByRef:
                    type = new ByReferenceType(type);
                    break;

                case Type.SzArray:
                    type = new ArrayType(type);
                    break;

                default:
                    var array = new ArrayType(type);
                    array.Dimensions.Clear();

                    for (int j = 0; j < specs [i]; j++)
                    {
                        array.Dimensions.Add(new ArrayDimension());
                    }

                    type = array;
                    break;
                }
            }

            return(type);
        }
Exemplo n.º 2
0
 private static ByReferenceType ResolveIfNeeded(IGenericInstance genericInstanceMethod, IGenericInstance genericInstanceType, ByReferenceType byReferenceType)
 {
     return(new ByReferenceType(ResolveIfNeeded(genericInstanceMethod, genericInstanceType, byReferenceType.ElementType)));
 }