gpt4 book ai didi

c# - 没有定义或扩展方法 - ISupportInitialize

转载 作者:行者123 更新时间:2023-11-30 20:53:23 24 4
gpt4 key购买 nike

我正在将一个 dll 反编译为 C#。反编译器生成的项目之一包含 1000 多行错误行,如下所示:

this.pictureBox1.BeginInit();

Error 385 'System.Windows.Forms.PictureBox' does not contain a definition for 'BeginInit' and no extension method 'BeginInit' accepting a first argument of type 'System.Windows.Forms.PictureBox' could be found (are you missing a using directive or an assembly reference?)

常规 Picturebox 没有 BeginInit() 方法。我只是注释掉了以下几行:

//this.pictureBox1.BeginInit();

然后我检查了另一个反编译器的输出,它看起来像下面,VS 编译器没有以前的错误:

((ISupportInitialize)this.pictureBox1).BeginInit();

由于崩溃,我无法使用第二个反编译器一次导出所有源代码。现在我不确定我必须做什么。由于需要先清除其他错误,我无法运行和调试项目。我的选择是:

  1. 只需注释掉这些行即可。
  2. 修改并插入 (ISupportInitialize) 标签。
  3. 如果可能,创建一个扩展方法。

最后一个选项对我来说似乎最简单。我可以创建 BeginInit() 扩展方法吗,它会毫无问题地工作吗?我如何实现和使用 ISupportInitialize?

最佳答案

试试这个:

public static class PictureBoxExtension {
public static void BeginInit(this PictureBox pb){
((ISupportInitialize)pb).BeginInit();
}
}

或者更好的是,您可以对所有支持 ISupportInitialize 的控件进行尝试。这对正常访问是隐藏的,因为它是显式实现的,因此我们可以使用此扩展来公开它(无需强制转换):

public static class SupportInitExtension {
public static void BeginInit<T>(this T c) where T : ISupportInitialize {
c.BeginInit();
}
}

关于c# - 没有定义或扩展方法 - ISupportInitialize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com