У меня есть этот метод:Как вы называете общий метод, если знаете только параметр типа во время выполнения?
public List<T> SomeMethod<T>(params) where T : new()
Так что я хочу назвать эту SomeMethod
, который хорошо, если я знаю, тип:
SomeMethod<Class1>();
Но если я только Class1
во время выполнения я не могу назови это?
А как позвонить SomeMethod
с неизвестным типом? Я получил Тип, используя отражение.
У меня Тип Тип но SomeMethod<Type | GetType()>
не работает.
Update 7 мая:
Вот пример кода, что я хочу добиться:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleApplication63
{
public class DummyClass
{
}
public class Class1
{
public string Name;
}
class AssemblyTypesReflection
{
static void Main(string[] args)
{
object obj = new Class1() { Name = "John" } ;
Assembly assembly = Assembly.GetExecutingAssembly();
var AsmClass1 = (from i in assembly.GetTypes() where i.Name == "Class1" select i).FirstOrDefault();
var list = SomeMethod<AsmClass1>((AsmClass1)obj); //Here it fails
}
static List<T> SomeMethod<T>(T obj) where T : new()
{
return new List<T> { obj };
}
}
}
Это демонстрационный вынимают из большего контекста.
SLaks ответил на ваш вопрос хорошо. Я просто замечаю, что вы неправильно использовали слово «анонимный», что означает что-то другое. В вашем случае T является общим. – SimpleVar
Это ваш вызов API или какой-то сторонний API? Если это ваше, то подумайте об изменении, потому что дженерики не решают проблему, а создают ее в этом случае. – empi
Возможный дубликат [Вызов универсального метода с аргументом типа, известным только во время выполнения] (http://stackoverflow.com/questions/325156/calling-generic-method-with-a-type-argument-known-only-at -execution-time) – user7116