0
ここに私のコードです:新しい():は私がTでのTからキャストすることができます。新しい()
void DoSomething<T>()
{
var constructor = typeof(T).GetConstructor(null);
if(constructor != null)
{
DoSomethingElse<T>(); // compiler error
}
else
{
//...
}
}
void DoSomethingElse<T>() where T:new()
{
T x = new T();
//...
}
はTが正当なTであるコンパイラを説得する方法はありますか?
も、ありません。明らかに、コンパイラはそのようには動作しません:)最初のメソッドにも 'new()'制約を追加する必要があります。 –
できません。 DoSomethingは、デフォルトコンストラクタを持つものだけでなく、すべての型で動作する必要があります。 –
ええと、あなたは、反射を使って 'DoSomethingElse'を呼び出すことができます。 –