定義や拡張方法はありません - IsUpportInitialize
-
21-12-2019 - |
質問
DLLをC#に分解しています。 Decompiler Generatedプロジェクトの1つには、以下のようなものが1000以上のバグの行が含まれています。
this.pictureBox1.BeginInit();
.
エラー385 'System.Windows.Forms.PictureBox'には含まれていません 'beginInit'と拡張メソッド 'begininit'の定義 type 'system.windows.forms.picturebox'の最初の引数を受け入れる 見つかった可能性があります(あなたはディレクティブまたはアセンブリを使っていますか? 参照?)
通常の写真ボックスのbinhinit()メソッドはありません。私は単に行をコメントアウトしました:
//this.pictureBox1.BeginInit();
.
それから私は別の偏差の出力を調べました、それは以下のように見え、そしてvsコンパイラは以前のエラーを持っていません:
((ISupportInitialize)this.pictureBox1).BeginInit();
.
クラッシュのために、私は2番目の逆コンパイラですべてのソースを一度にエクスポートできませんでした。今私が何をしなければならないのかわからない。最初にクリアする必要があるため、プロジェクトを実行&デバッグできませんでした。私のオプションは次のとおりです。
- 行をコメントしてください。
- 変更と挿入(IsupportInitialize)タグ。
- 可能であれば拡張方法を作成します。
最後の選択肢は私にとって最も簡単なようです。 Semendit()拡張方法を作成できますか?問題なく機能しますか?そして、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();
}
}
. 所属していません StackOverflow