C# 如何将类型作为参数传递

来源:百度知道 编辑:UC知道 时间:2024/06/06 05:00:39
我想实现这样一个功能,将类型作为参数传递:
已经有FrmA、FrmB、FrmC、FrmS等几个窗体类了,
需要实现这样一个函数:
fun(参数A)
{
参数A F = new 参数A();
F.Show();
}

fun(FrmA);//就能新建并打开一个FrmA窗口
我知道switch ... case ,可是用 switch代码 会 很长 ,而且都是相同的代码。
那个映射机制我还不懂,那位大侠能说详细一点吗?
还有没有其他办法呢?

有更详细的或者更好的继续追加分

C#有没有像C++里函数模板那样的东西?

把问题简单一点:
调用fun("FrmA")打开FrmA窗口
调用fun("FrmB")打开FrmB窗口
...
但是不能用switch,因为窗口类有成百上千个

用反射:

主调类:
private void button3_Click(object sender, EventArgs e)
{
bindForm("WindowsApplication1.UserControl1");
}

private void bindForm(string f)
{
System.Type t = System.Type.GetType(f);
object ff = Activator.CreateInstance(t,null);
System.Reflection.MethodInfo method = t.GetMethod("setText");
System.Reflection. BindingFlags flag = System.Reflection. BindingFlags.Public |System.Reflection. BindingFlags.Instance;
object returnValue = method.Invoke(ff, null);
}
各窗体:
public partial class UserControl1 : Form
{
public UserControl1()
{
InitializeComponent();
}
public void setText()
{
Text = "kkk";
Show();
}
}

我想说的是你的参数类型怎么写?

是写string 还是form?

写string不能实现!如果你在转入方法的地方能找到窗体对象的话,就

可以传form过去!然后new实例!

如果是控件的话呢!还可以typeof,form不知道行不行!

你那种思路传的参数只能是