Я пытаюсь достичь чего-то определенного в c #, и я не знаю, есть ли у него имя (или даже если это хорошая практика). Я попытался максимально упростить код, потому что это общая проблема (не каламбур, я имею в виду, что он не зависит от остальной части реализации)
По сути, у меня есть универсальный класс Class1, класс A, класс B, который наследуется от A, и другой класс Class2, который наследуется от Class1 с B в качестве универсального параметра.
Проблема в том, что я получаю сообщение об ошибке «не могу преобразовать из« Class2 »в« Class1 »» при попытке привести.
Я пробовал разные комбинации и провел часы и проверил десятки ссылок, но пока не могу найти ответ на эту проблему. Имейте в виду, я довольно новичок в программировании (несколько лет, но я учился сам)
public class Class1<T> where T : A
{
public string name;
}
public class Class2 : Class1<B> { }
public class A { }
public class B : A { }
//if I change the parameter type to Class1<B>, but that defeats the purpose
//of being able to call this function with any class that extends Class1
void TestFunction(Class1<A> test)
{
Debug.Log(test.name);
}
//I basically want to do this
var instance = new Class2();
//I can't do this because instance is of type Class2 but can't be converted
//to Class1<A>
TestFunction(instance);
Я хочу иметь возможность иметь классы, расширяющие class1, например class2, с параметрами, расширяющими A, например, B, но по причине, которую я не могу понять, это не работает таким образом.
Спасибо за любую помощь! Я как бы над головой и чувствую, что никогда не найду решение, которое работает на моем уровне.