示例#1
0
        public override Type[] GetGenericArguments()
        {
            if (_genericArguments == null)
            {
                var erasedArguments  = RuntimeType.GetGenericArguments();
                var fullArguments    = FullType.GetGenericArguments();
                var genericArguments = new Type[erasedArguments.Length];
                for (int i = 0; i < erasedArguments.Length; i++)
                {
                    var full   = fullArguments[i];
                    var erased = erasedArguments[i];
                    if (full is ErasedWrapperType || full == erased)
                    {
                        genericArguments[i] = full;
                        continue;
                    }

                    genericArguments[i] = new ErasedWrapperType(erased, (InterpretedType)full);
                }
                _genericArguments = genericArguments;
            }

            return(_genericArguments);
        }
示例#2
0
 public ErasedWrapperConstructor(ErasedWrapperType wrapperType, ConstructorInfo runtimeConstructor)
 {
     _wrapperType        = wrapperType;
     _runtimeConstructor = runtimeConstructor;
 }