Задать вопрос
@i__egor

Как тип переменной передать в аргумент типа?

Например, нужно такое:
void Func1(System.Type type)
{
    MyFunc2<type>();
}
  • Вопрос задан
  • 34 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
freeExec
@freeExec
Участник OpenStreetMap
Ну вообще это странно, просто передавать тип. Можно как и в твоём примере Func1("hello".GetType())

Но вообще мода давно перешла не генерики.
string text = Func1<string>();

T Func1<T>()
{
    return (T)myPrivateObject;
}
Ответ написан
Комментировать
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
В общем случае примерно так:
public class BarType
{ }

public class Foo
{
    public static string Bar<T>() => $"Bar() is called with generic: {typeof(T).FullName}";
}


Type type = typeof(Foo);
MethodInfo mi = type.GetMethods().Single(m => m.Name == "Bar" && m.IsGenericMethodDefinition);
MethodInfo genericMi = mi.MakeGenericMethod(typeof(BarType));
object result = genericMi.Invoke(null, []);
Console.WriteLine($"Result: {result}");

>> Result: Bar() is called with generic: Example.App+BarType
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы