updateForm.show()
方法,而在updateForm中我想知道哪个类/表单调用了updateForm,所以我可以更新受尊重的类db。目前我正在设置一个public
全局variable
来验证哪个表单正在调用updateForm ..但我认为'还有另一种方法可以做到这一点,我想Reflection可以解决这个问题,但是我无法解决,这是我的代码
///carForm
public class carForm:Form
{
Program.globalvariable="CAR"; //global variable
UpdateFrom updateForm=new UpdateForm();
updateForm.Show();
}
///parForm
public class parForm:Form
{
Program.globalvariable="PAR";
UpdateFrom updateForm=new UpdateForm
updateForm.Show();
}
///updateForm
public class updateForm:Form
{
if(Program.globalvariable=="CAR")
///code for update CAR db table
else if(Program.globalvariable=="PAR")
///code for update PAR db table
Type obj = GetType(); //This is what i was tryin' using Reflection but giving error
}
所以,如果我得到调用的类/对象信息,我可以更新受尊重的数据库表,
可以通过Reflection来知道hw这样做,
答案 0 :(得分:2)
将参数放在updateForm
///carForm
public class carForm:Form
{
UpdateFrom updateForm=new UpdateForm("CAR");
updateForm.Show();
}
///parForm
public class parForm:Form
{
UpdateFrom updateForm=new UpdateForm("PAR");
updateForm.Show();
}
///updateForm
public class updateForm:Form
{
private readonly string _key;
public updateForm(string key)
{
_key = key;
}
public void SomeMethod()
{
// check for _key here.
}
}
修改强>
如果你想拥有实际的类型,你可以直接传递它,不需要反射。
///carForm
public class carForm:Form
{
UpdateFrom updateForm=new UpdateForm(this.GetType());
updateForm.Show();
}
///parForm
public class parForm:Form
{
UpdateFrom updateForm=new UpdateForm(this.GetType());
updateForm.Show();
}
///updateForm
public class updateForm:Form
{
private readonly Type _type;
public updateForm(Type type)
{
_type = type;
}
public void SomeMethod()
{
// check for _type here.
}
}
编辑2:
但总的来说,传递这样的类型闻起来像坏代码。你的控制流可能最终会像一碗意大利面。
如果您希望updateForm
更新其他表单上的某些值,则
updateForm
构造函数中updateForm
显示的问题/标题/等的所有相关信息。updateForm
中,将相关“答案”保存到updateForm
DialogResult
中的updateForm
设置为OK
或Cancel
,具体取决于您如何退出updatForm
updateForm
:if (updateForm.ShowDialog == DialogResult.OK) {// read all properties from updateForm}
答案 1 :(得分:0)
如果您想自动获取此类信息,则可能需要查看StackTrace课程。虽然不确定使用它的性能......