c# - 在运行时将不同的参数传递给未知形式

标签 c#

我使用以下代码在运行时调用和打开一个表单(来自该论坛)。表单的名称取决于用户输入:

    // Method
    private void ShowForm(string formToCall)
    {
        Type type = Type.GetType("MyForms." + formToCall);
        var form = Activator.CreateInstance(type) as Form;
    }

    // Call
    ShowForm("StationDef");

现在,有些形式采用参数,有些则不采用。我可以向 ShowForm() 方法添加一个默认值为 null 的参数,该方法只会在实际传递参数时更改,但我无法弄清楚如何更改 ShowForm() 代码以在这种情况下接受参数。

这样的东西是行不通的:

    private void ShowForm(string formToCall, object arg = null)
    {
        Type type = Type.GetType("MyForms." + formToCall);
        var form = Activator.CreateInstance(type) as Form(arg);
    }

任何帮助将不胜感激。

最佳答案

也许可以尝试这样的事情:

private void ShowForm(string formToCall, object[] args)
{
    Type type = Type.GetType("MyForms." + formToCall);
    var form = Activator.CreateInstance(type, args) as Form;
}

你甚至可以像这样让它变得更“友好”

private void ShowForm(string formToCall, params object[] args)

然后像这样使用它:

ShowForm("MyForm", arg1, arg2);

关于c# - 在运行时将不同的参数传递给未知形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45167478/

相关文章:

c# - 防止代码被加载到另一个 AppDomain

c# - 协程第二次不工作

c# - 从也使用其中一些包的项目中引用使用 NuGet 包的程序集

c# - BackgroundWorker 在 foreach 循环期间从 DAL 返回值

C# WPF 按钮点击

c# - 何时使用 ISourceBlock 或 IObservable

c# - 为什么 is-operator 会导致不必要的装箱?

c# - 如何设置两个连接字符串MySqlCommand对象参数?

c# - 如何访问 List<object> 属性?

c# - .NET Core 的可选构造函数注入(inject)参数