Итак, допустим у нас есть следующий код:
public abstract class Letters
{
//Код...
}
public class A : Letters { }
public class B : Letters { }
public class C : Letters { }
class Program
{
public static void Method<T>() where T : Letters
{
//Код...
}
static void Main(string[] args)
{
//Допустим, мы не контролируем, какой именно тип сюда попадает, но он точно относится к иерархии класса Letters.
Letters obj = new A();
Type type = obj.GetType();
Method<type>(); //???
}
}
Есть ли хоть какой то вариант передать тип переменной obj в универсальный метод, или это не допустимо, ну а если можно, то как?
Да, я видел похожий вопрос здесь, но он не решает мою проблему.
Можно через рефлексию
typeof(Program)
.GetMethod(nameof(Method))
.MakeGenericMethod(type)
.Invoke(obj : null, parameters : null);
Есть ли хоть какой то вариант передать тип переменной obj в универсальный метод, или это не допустимо, ну а если можно, то как?
Если вы правильно сформулировали свой вопрос, то передать тип переменной obj
в метод можно в качестве параметра типа Type
:
public static void Method<T>(Type type) where T : Letters
{
//Код...
}
И вызывать метод так:
Method<Letters>(obj.GetType());
Я не знаю, зачем это нужно. Я почти уверен, что вы не этого хотите. Но ИМХО, ответ на ваш вопрос дан.
Виртуальный выделенный сервер (VDS) становится отличным выбором
После нажатия на кнопку, должно содержимое DataGrid должно экспортироваться в XML при помощи сериализации, но происходит ошибка:
Создал свой стиль чекбокса на основе стиля из сети (слайдер)Проблема в том, что если создать этот слайдер с дефолтным параметром IsChecked = true, то при...