Нет определения или метода расширения - Isupportinitialize

StackOverflow https://stackoverflow.com//questions/20035854

  •  21-12-2019
  •  | 
  •  

Вопрос

Я декомпиляю DLL в C #. Один из генерируемых декомпилярных проекта содержит 1000+ багги, которые подобны ниже:

this.pictureBox1.BeginInit();
.

Ошибка 385 'System.windows.forms.picturebox' не содержит Определение для «начинающегося» и никакого метода расширения «Ongistinit» Принимая первый аргумент типа «System» .Windows.Forms.PictureBox ' можно найти (вы пропустите директиву с использованием или сборкой Ссылка?)

Нет метода начинающих () для обычного i Plationalbox. Я просто прокомментировал линии:

//this.pictureBox1.BeginInit();
.

Тогда я осмотрел выходной разъем другого декомпилятора, он выглядит как приведено ниже, а VS компилятор не предыдущая ошибка:

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

Из-за аварии я не мог экспортировать все источники сразу со вторым декомпилером. Теперь я не уверен, что я должен сделать. Я не мог запустить и отладки проекта из-за других ошибок необходимо сначала очистить. Мои варианты:

  1. Просто прокомментируйте линии.
  2. Изменить и вставить (isupportinitialize) тег.
  3. Создать метод расширения, если это возможно.
  4. Последняя вариант кажется легкой для меня. Могу ли я создать метод расширения OnginitIt (), это будет работать без проблем? А как я могу реализовать и использовать 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();
   }
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top