У меня есть класс с общим типом "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, учитывая, что, насколько мне известно, они идентичны.
edit: я боюсь, что мне может не хватать какой-то важной части логики фреймворка
edit2: хотя решения для ошибки компилятора важны, мой вопрос о том, почему компилятор сообщает об ошибке в строке 1, а не в строке 3.