2013-05-02 25 views
0

例如,我有一個字符串列表,碰巧是靜態類的名稱,並取決於選擇哪個字符串名稱,我只想使用該靜態類。我知道在靜態類上調用的方法是什麼,每個類都是相同的。如果我只有類字符串名稱,如何在靜態類上調用方法?

如果字符串爲「X」,「Y」,「Z」和選擇的字符串爲「Z」,並調用該方法process(),然後在我的代碼,將調用x.process()在某種程度上,x是名一個實際的靜態類。

請記住這些是static類。

+0

看到這一點:http://stackoverflow.com/questions/1418209/calling-a-method-on-a-static-class-given-its-type-name-and-method-names-as -stri – Zadam 2013-05-02 14:22:47

+0

考慮以下方法名稱的c#命名約定...與Java/Javascript不同,方法名稱應該位於CapitalCamelCase(或PascalCase) – spender 2013-05-02 14:26:46

回答

7

您將使用反射,但包括名稱爲classnamespace

Type type = Type.GetType("namespace.x"); 
MethodInfo process = type.GetMethod("process"); 
process.Invoke(null, null); 
+0

@descf請注意類名稱可能還不夠,您還需要命名空間。 – 2013-05-02 14:29:08

+0

好點,我更新了 – Gabe 2013-05-02 14:30:45

+0

@Gabe它獲得了類型ok,但沒有保留null的方法。 – descf 2013-05-02 14:55:23

相關問題