我有一个具有通用类型“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 行报告一个错误:
Cannot convert type 'G' to 'DetailElement'
但是第 3 行工作正常。我可以通过执行第 5 行中编写的代码来解决这个问题。
我想知道的是为什么编译器会在第 1 行报告错误,而不是在第 3 行报告错误,因为据我所知,它们是相同的。
编辑:恐怕我可能会遗漏一些重要的框架逻辑
edit2:虽然编译器错误的解决方案很重要,但我的问题是为什么编译器在第 1 行而不是在第 3 行报告错误。