我将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();
.

由于崩溃,我无法用第二个分解器立即导出所有来源。现在我不确定我要做什么。由于需要首先清除其他错误,我无法运行并调试项目。我的选择是:

  1. 只是评论出线条。
  2. 修改和插入(iSupportInitialize)标记。
  3. 如果可能,请创建扩展方法。

    最后一个选择对我来说似乎最简单。我可以创建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();
   }
}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top