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. 如何根據記錄對象的類型定義XmlSerializer的類型?
- 4. 如何根據路徑獲取用戶控件的類型
- 5. 如何調用根據特定對象的類型
- 6. 使用用戶定義的類類型對象的向量
- 7. 如何獲取對象的類名?
- 8. 如何獲取String對象的類名?
- 9. C++如何獲取對象的類型?
- 10. 如何根據用戶類型獲取視頻?
- 11. 根據輸入字符串獲取CoreData對象數據類型
- 12. 獲取自定義Scala對象的類
- 13. 如何將用戶定義的數據類型對象綁定到DetailsView?
- 14. Scala宏:獲取類定義中對象成員的根類型的類型參數
- 15. Flex自定義TreeItemRenderer,根據對象的類型進行更改?
- 16. 如何獲取有關用戶定義類型的信息?
- 17. COM對象:用戶定義的類型沒有定義
- 18. 從泛型類型獲取類對象
- 19. 如何從HitTest獲取對象類型?
- 20. 如何獲取泛型類的對象類型?
- 21. 如何使用django泛型類detailview獲取用戶特定的對象?
- 22. 如何從繼承類型的對象中獲取BaseType類型的對象?
- 23. PDO:MVC如何根據用戶類型重定向用戶登錄
- 24. 如何根據Magento中的類別id獲取類別名稱
- 25. T-SQL:如何通過ID獲取用戶定義的列的數據類型?
- 26. 如何獲取自定義屬性的屬性類型名稱?
- 27. Symfony2 - 如何根據自定義查詢獲取實體對象?
- 28. 如何從泛型類型獲取類對象?
- 29. Django - 如何從使用MTI的父類對象獲取子類型對象?
- 30. 從父類中獲取對象類名?
我們將需要一些我認爲更多的信息。你能寫一些你想做的事情的示例代碼,即使它不起作用嗎? – Mykroft 2009-05-01 13:19:04