1
A
回答
5
如果你有一个字符串,然后做的第一件事就是用Type.GetType(string)
,或(最好)Assembly.GetType(string)
得到Type
实例。从那里,你需要使用反射:静态方法
Type type = someAssembly.GetType(typeName);
typeof(TypeWithTheMethod).GetMethod("SomeGenericFunction")
.MakeGenericMethod(type).Invoke({target}, new object[] {objectID});
其中{target}
是实例方法的实例,null
。
例如:
using System;
namespace SomeNamespace {
class Foo { }
}
static class Program {
static void Main() {
string typeName = "SomeNamespace.Foo";
int id = 123;
Type type = typeof(Program).Assembly.GetType(typeName);
object obj = typeof(Program).GetMethod("SomeGenericFunction")
.MakeGenericMethod(type).Invoke(
null, new object[] { id });
Console.WriteLine(obj);
}
public static T SomeGenericFunction<T>(int id) where T : new() {
Console.WriteLine("Find {0} id = {1}", typeof(T).Name, id);
return new T();
}
}
0
查看System.Type.GetType()方法 - 提供完全限定的类型名称,并返回相应的Type对象。然后,您可以做这样的事情:
namespace GenericBind {
class Program {
static void Main(string[] args) {
Type t = Type.GetType("GenericBind.B");
MethodInfo genericMethod = typeof(Program).GetMethod("Method");
MethodInfo constructedMethod = genericMethod.MakeGenericMethod(t);
Console.WriteLine((string)constructedMethod.Invoke(null, new object[] {new B() }));
Console.ReadKey();
}
public static string Method<T>(T obj) {
return obj.ToString();
}
}
public class B {
public override string ToString() {
return "Generic method called on " + GetType().ToString();
}
}
}
+0
私有类识别TestClass:BaseClass的{ 公共识别TestClass(长ID):碱(ID) { } } – user99322 2009-05-01 13:52:21
相关问题
- 1. 如何根据获取的JSON对象为类定义属性?
- 2. Ruby:如何根据类名获取类,以及如何根据字段名获取对象的字段?
- 3. 获取有关用户定义对象类型中的attrubute类型的信息
- 4. 如何根据记录对象的类型定义XmlSerializer的类型?
- 5. 如何根据路径获取用户控件的类型
- 6. 如何调用根据特定对象的类型
- 7. 如何根据类型“功能”检查对象的类型
- 8. 使用用户定义的类类型对象的向量
- 9. 如何获取自定义类对象的java.lang.Type对象?
- 10. 如何获取对象的类名?
- 11. 如何获取String对象的类名?
- 12. 如何获取类的对象名称?
- 13. C++如何获取对象的类型?
- 14. 如何根据名称(c)订购“结构”类型的对象?
- 15. 如何根据用户类型获取视频?
- 16. c#如何返回用户定义类型的空对象?
- 17. 用户自定义数据类型VS用户自定义类型VS用户定义的表类型
- 18. 如何确定自定义对象的“名称”或类型?
- 19. 用户定义的类对象的类型 - Python
- 20. 根据输入字符串获取CoreData对象数据类型
- 21. 获取自定义Scala对象的类
- 22. 如何将用户定义的数据类型对象绑定到DetailsView?
- 23. Flex自定义TreeItemRenderer,根据对象的类型进行更改?
- 24. Scala宏:获取类定义中对象成员的根类型的类型参数
- 25. 如何获取有关用户定义类型的信息?
- 26. COM对象:用户定义的类型没有定义
- 27. 从泛型类型获取类对象
- 28. 如何使用用户定义的数据类型对定义的数据类型进行操作?
- 29. 如何获取对象类型
- 30. 如何从HitTest获取对象类型?
我们将需要一些我认为更多的信息。你能写一些你想做的事情的示例代码,即使它不起作用吗? – Mykroft 2009-05-01 13:19:04