C# 将泛型表单变量转换为特定类型的表单

C# 将泛型表单变量转换为特定类型的表单,c#,forms,C#,Forms,我有一个使用多个表单的项目,该项目可能运行相同类型的多个表单。我试图编写一个类来管理我所有的表单,但我遇到了类型问题 显然,泛型类“Form”没有一些我需要在表单中调用的特定函数。我希望能够抓取一个表单,检查它的类型,然后调用它的类型特定函数。我为这个设置的是一个switch case,在这里我获取类型的string组件,然后执行相应的操作(稍后我可能会清理它)。问题是,即使我知道类型,我也无法将“Form”变量重新分配给“TextEdit”变量。上面说 无法将类型“System.Windows

我有一个使用多个表单的项目,该项目可能运行相同类型的多个表单。我试图编写一个类来管理我所有的表单,但我遇到了类型问题

显然,泛型类“Form”没有一些我需要在表单中调用的特定函数。我希望能够抓取一个表单,检查它的类型,然后调用它的类型特定函数。我为这个设置的是一个switch case,在这里我获取类型的string组件,然后执行相应的操作(稍后我可能会清理它)。问题是,即使我知道类型,我也无法将“Form”变量重新分配给“TextEdit”变量。上面说

无法将类型“System.Windows.Forms.Form”隐式转换为“GeFoss.TextEdit”。存在显式转换(是否缺少转换?)

这让我相信有一种方法可以转移,但我很难找到它。我不知道我是否把这件事说得不清楚,但如果你有问题,请告诉我

这是相关代码。请注意,在主代码中创建进程后,会立即调用Process.initialize([[Form]])

 public class Process
{

    public Form myFORM = new Form();
    public Type mytype;
.
.
.
.
    public void initialize(Form genMe)
    {
        myFORM = genMe;
        mytype = myFORM.GetType();
        giveProc();
    }
    private void giveProc()
    {
        switch (Convert.ToString(mytype))
        {
            case "GeFoss.TextEdit":
                TextEdit temp = myFORM;
                break;
            default:
                break;
        }
    }

您可以按照消息中的说明将其强制转换为所需的类型,强制转换的语法如下所示:

 GeFoss.TextEdit temp = (GeFoss.TextEdit)myFORM;

注意-强制转换可能会导致运行时异常(在本例中不包括switch语句)。

Awesome!非常感谢。我会投票支持你的,但显然我需要15个这样的名声