Я пишу . Компилятор NET On-the-Fly для сценариев CLR и хочет, чтобы метод выполнения делал общепринятым:
object Execute()
{
return type.InvokeMember(..);
}
T Execute<T>()
{
return Execute() as T; /* doesn't work:
The type parameter 'T' cannot be used with the 'as' operator because
it does not have a class type constraint nor a 'class' constraint */
// also neither typeof(T) not T.GetType(), so on are possible
return (T) Execute(); // ok
}
Но я думаю, что оператор as
будет очень полезен: если тип результата не является T
, метод вернет null
вместо исключения! Можно ли это сделать?