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