无定义或扩展方法 - ISUPPORTINITIALIZE
-
21-12-2019 - |
题
我将dll分解为c#。其中一个分解器生成的项目包含1000多个越野线,如下所示:
this.pictureBox1.BeginInit();
.
错误385'system.windows.forms.picturebox'不包含一个 'beginInit'的定义,没有扩展方法'begininit' 接受“system.windows.forms.picturebox”类型的第一个参数 可以找到(你错过了使用指令或装配吗? 参考?)
常规图片框没有regineIt()方法。我简单地评论了线条:
//this.pictureBox1.BeginInit();
.
然后我检查了另一个分解器的输出,它看起来下面,而VS编译器没有先前的错误:
((ISupportInitialize)this.pictureBox1).BeginInit();
.
由于崩溃,我无法用第二个分解器立即导出所有来源。现在我不确定我要做什么。由于需要首先清除其他错误,我无法运行并调试项目。我的选择是:
- 只是评论出线条。
- 修改和插入(iSupportInitialize)标记。 如果可能,请创建扩展方法。
最后一个选择对我来说似乎最简单。我可以创建regineinit()扩展方法,它会在没有任何问题的情况下工作吗?以及如何实现和使用iSupportInitialize?
解决方案
试试:
public static class PictureBoxExtension {
public static void BeginInit(this PictureBox pb){
((ISupportInitialize)pb).BeginInit();
}
}
.
甚至更好,您可以尝试此支持支持生成的所有控件。这是隐藏的正常访问,因为它已经实现了 显式 ,因此我们可以使用此扩展将其公开(无铸造):
public static class SupportInitExtension {
public static void BeginInit<T>(this T c) where T : ISupportInitialize {
c.BeginInit();
}
}
. 不隶属于 StackOverflow