C# 如何将类型作为参数传递
我想实现这样一个功能,将类型作为参数传递:已经有FrmA、FrmB、FrmC、FrmS等几个窗体类了,需要实现这样一个函数:fun(参数A){参数AF=new参数A();...
我想实现这样一个功能,将类型作为参数传递:
已经有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,因为窗口类有成百上千个 展开
已经有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,因为窗口类有成百上千个 展开
11个回答
展开全部
直接作为object传过去,然后再根据需要检测类型:
public
void
show(object
o)
{
if
(o
is
label)
{
(o
as
label).text
=
"123";
}
else
if
(o
is
textbox)
{
(o
as
textbox).text
=
"123";
}
}
public
void
show(object
o)
{
if
(o
is
label)
{
(o
as
label).text
=
"123";
}
else
if
(o
is
textbox)
{
(o
as
textbox).text
=
"123";
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你那种思路传的参数只能是string 然后用反射机制实行 要不然以你的代码传的是一个类型 他的类型对象是空的
Assibly as = Assibly.Load(命名空间)
Object obj = as.createInstance(命名空间+类名)
Assibly as = Assibly.Load(命名空间)
Object obj = as.createInstance(命名空间+类名)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参数有两种一个是值类型的,另外一种引用类型的,
(ref a)
另外一种是(object obj)
这两种做为参数,让你参考一下!
(ref a)
另外一种是(object obj)
这两种做为参数,让你参考一下!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用switch...case...不可以么??传入标记符.然后Switch这样做.
你非要这么做的话...好象用反射可以实现..
你非要这么做的话...好象用反射可以实现..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想说的是你的参数类型怎么写?
是写string 还是form?
写string不能实现!如果你在转入方法的地方能找到窗体对象的话,就
可以传form过去!然后new实例!
如果是控件的话呢!还可以typeof,form不知道行不行!
是写string 还是form?
写string不能实现!如果你在转入方法的地方能找到窗体对象的话,就
可以传form过去!然后new实例!
如果是控件的话呢!还可以typeof,form不知道行不行!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询