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); }
public ErasedWrapperConstructor(ErasedWrapperType wrapperType, ConstructorInfo runtimeConstructor) { _wrapperType = wrapperType; _runtimeConstructor = runtimeConstructor; }