111,093
社区成员




public static RemindSet RS;
private void btnRemindSet_Click(object sender, EventArgs e)
{
if (RS == null)
{
RS = new RemindSet();//将主窗体对象传递过去
RS.Show();
}
else
{
RS.Activate();
}
}
if (RS == null)
{
RS = new RemindSet();//将主窗体对象传递过去
RS.Show();
}
else
{
RS.Activate();
}
封装成一个函数,应该怎么写? private void ReAct<T>(T form) where T : Form, new()
{
if (form == null)
{
form = new T();//将主窗体对象传递过去
form.Show();
}
else
{
form.Activate();
}
}
private void ReAct(Form form)
{
if (form == null)
{
form = new Form();//将主窗体对象传递过去
form.Show();
}
else
{
form.Activate();
}
}
但这个函数没有达到我的要求,我的意思是form可以是任意一个类,比如class1,或是class2,因为很多地方要用到这段代码,我不想重复,就想把这部分封装成一个函数。但那个form只是Form这个类,我知道这跟我的参数传递方式有关,我这种写法不对,要怎么写才能达到那种效果呢。我不知道这次表述清楚没有。。。。上面的表达确实有点问题。。
class Template<T> where T:IRemindSet
{
public static void Foo(T t)
{
if (t== null)
{
t=RemindSetFactory.Create(typeof(T));//将主窗体对象传递过去
t.Show();
}
else
{
t.Activate();
}
}
}
interface IRemindSet
{
void Show();
void Active();
}
public static RemindSet RS;
private void btnRemindSet_Click(object sender, EventArgs e)
{
ShowRemindSet(RS);
}
private void ShowRemindSet(RemindSet RS){
if(RS==null)
{
RS = new RemindSet();
RS.Show();
}
else
{
RS.Activate();
}
}