예제 #1
0
    [ANonOptimize][AInvariant] public static CSharpType AllocType(string name)
    {
        var type = ParseTypeName <CSharpType>(name,
                                              (typeName, assemblyName) =>
        {
            CSharpType result;
            if (!_t.TryGetValue(typeName, out result))
            {
                result = BuildType(typeName);
            }
            return(result);
        },
                                              (t1, tArray) =>
        {
            if (t1 == null)
            {
                return(t1);
            }
            return(CSharpType.CreateConstructedType(t1, t1.ContainingType, tArray));
        },
                                              (t) =>
        {
            if (t == null)
            {
                return(t);
            }
            return(CSharpType.CreateArray(1, t));
        });

        if (type != null && !_t.ContainsKey(name))
        {
            _t.Add(name, type);
        }
        return(type);
    }