我使用以下代碼在運行時調用並打開表單(來自此論壇)。表單的名稱取決於用戶輸入:在運行時將可變參數傳遞給未知表單
// Method
private void ShowForm(string formToCall)
{
Type type = Type.GetType("MyForms." + formToCall);
var form = Activator.CreateInstance(type) as Form;
}
// Call
ShowForm("StationDef");
現在,某些表單需要參數,而有些不需要。我可以向ShowForm()方法添加一個默認值爲空的參數,然後只有當參數實際傳遞時纔會改變,但我無法弄清楚如何在這種情況下更改ShowForm()代碼以接受參數。
像這樣的東西不起作用:
private void ShowForm(string formToCall, object arg = null)
{
Type type = Type.GetType("MyForms." + formToCall);
var form = Activator.CreateInstance(type) as Form(arg);
}
任何幫助將不勝感激。
我不清楚什麼是問題n是。你想'arg'允許0或1個參數嗎?還是應該支持1個以上?你想用'arg'做什麼**? – mjwills
如果你使用'JavaScriptSerializer',那麼你可以傳遞兩個字符串:ArgType,Arguments並獲得動態能力,而不必與C#扯上關係。在握手使用C#的同時,您將以JSON的形式發送,以使交換更加輕鬆。 –