Я пытаюсь преобразовать базовый объект в производный объект.
Вот так:
DerivedClass castedBaseObject = (randomDerivedObject.GetType())originalBaseObject;
Приведенный выше пример не работает, выдавая следующую ошибку: error CS1003: Syntax error, ',' expected
@Bijington Это долго, в основном я работаю с API и пытаюсь обернуть класс вокруг уже определенных классов, при использовании уже определенных методов они возвращают базовый класс (тип), поэтому для того, чтобы я мог использовать обертку Я написал (что заняло у меня довольно много времени), я должен создать базовый объект. Я использую довольно много разных классов-оболочек, поэтому я хотел бы выполнять итерацию и динамическое приведение.
Если вы ничего не знаете о типе во время компиляции, это невозможно с ключевым словом var
, так как оно ожидает статический тип. Однако вы можете использовать ключевое слово dynamic
.
Для преобразования см. ответы, например. stackoverflow.com/questions/9009986/… и stackoverflow.com/questions/4010144/…
@xaver извините, исправил.
Если у вас есть конечное число типов (назовем их MyClass1, MyClass2, ..., MyClassN
) и вы знаете, что ваш объект originalBaseObject
имеет один из этих типов, вы можете сделать следующее:
if (originalBaseObject is MyClass1 tmp1)
{
// do something with tmp1
}
else if (originalBaseObject is MyClass2 tmp2)
{
// do something with tmp2
}
// ...
// and the last type
else if (originalBaseObject is MyClassN tmpN)
{
// do something with tmpN
}
else {
throw new Exception("Non of the given types");
}
Можете ли вы предоставить немного больше контекста относительно того, почему вы хотите достичь этого?