我有一个类,我在其中声明它,但该类作为项添加到另一个更大的类。有没有办法在与调用相同的语句中调用Init()
方法?与调用构造函数时定义公共属性/变量类似。我不想在构造函数中调用Init()
方法,因为它与WPF Designer混淆。
FitsView fv = new FitsView();
fv.Init();
答案 0 :(得分:4)
您可以使用静态函数来执行此操作:
public static FitsView CreateFitsView()
{
var fv = new FitsView();
fv.Init();
return fv;
}
然后您只需调用静态函数而不是new FitsView()
答案 1 :(得分:0)
您还可以尝试将自定义事件挂钩到FitsView,如果它知道何时可以初始化它?
并像这样使用它:
FitsView fv = new FitsView();
fv.someCustomEvent += (o,e) => { fv.Init(); };
答案 2 :(得分:0)
与StringBuilder.Append
类似,您可以更改Init以返回对象的引用。
Public FitsView Init()
{
//Do stuff
return this;
}
然后:
FitsView fv = new FitsView().Init();
答案 3 :(得分:0)
如果设计人员因为你的init方法而出现问题,我可以想到两个原因:
Init
方法中所做的事情需要您的应用程序的位置(读取资源或文件或使用硬件)Init
方法需要动态加载一些外部程序集。对于您可能想要检查的第一件事:
此处的人也指出了这个错误,所以请注意(在winforms中托管wpf):https://connect.microsoft.com/VisualStudio/feedback/details/620001/system-componentmodel-designerproperties-getisindesignmode-does-not-work-if-the-wpf-is-hosted-on-a-winform#tabs
对于第二个问题,您可以将Init
方法包装在另一个方法中,例如InitWrapper
,然后检查包装方法的设计模式。