ジェネリック型「G」を持つクラスがあります
私のクラスモデルでは
public class DetailElement : ElementDefinition
このような方法があるとしましょう
public void DoSomething<G>(G generic)
where G : ElementDefinition
{
if (generic is DetailElement)
{
((DetailElement)generic).DescEN = "Hello people"; //line 1
//////
ElementDefinition element = generic;
((DetailElement)element).DescEN = "Hello again"; //line 3
//////
(generic as DetailElement).DescEN = "Howdy"; //line 5
}
else
{
//do other stuff
}
}
コンパイラは 1 行目に 1 つのエラーを報告します。
Cannot convert type 'G' to 'DetailElement'
しかし、3行目はうまくいきます。5 行目に書かれたコードを実行することで、この問題を回避できます。
私が知りたいのは、コンパイラが 3 行目ではなく 1 行目のエラーを報告する理由です。
編集:フレームワークロジックの重要な部分が欠けているのではないかと心配しています
edit2: コンパイラ エラーの解決策は重要ですが、私の質問は、コンパイラが 3 行目ではなく 1 行目にエラーを報告する理由についてです。