singlepost

Подмена методов в .net << На главную или назад  

Cкажите, а можно ли как то при помощи Reflection или еще как то, у типа класса подменить один метод немного другим в рантайме?

То есть я возьму класс, который лежит в стороннем модуле, чтото с ним сделаю а затем везде в стороннем модуле, который подключен через add reference у меня будет работать мой метод?

38 ответов в теме “Подмена методов в .net”

  1. 1
    Сергей Смирнов ответил:

    Попробуй унаследоваться от стороннего класса, и в классе-наследнике написать ключевое слово new в объявлении метода, который нужно подменить:

    public new int YourMethod( …. );

    После этого пользуешься наследником.
    Может не совсем то, что нужно, но мне помогало часто.

  2. 2
    Жека Кирпичев ответил:

    Я бы сказал, это не имеет вообще никакого отношения к тому, что нужно.

  3. 3
    Иван Пахомов ответил:

    Ну на самом деле вряд ли такое возможно, иначе двери для троянов были бы открыты. Вопрос тогда такой – как можно поменять некоторые значения констант в скомпиленном модуле .NET? Reflector декомпилит на ура. Но есть ли возможность поменять пару тройку констант?

    Верней возможность то понятно есть, вопрос в том какая тулза поможет?

  4. 4
    Иван Voyager ответил:

    Теоретически в runtime можно.
    А если в готовой сборке, то тулза – ildasm, ilasm в помощь.

  5. 5
    Иван Пахомов ответил:

    Спасибо!

    Я взял ILDASM раскомпилил, а потом ilasm скомпилил. Ресурсы включил, но прога не запускается – вылетает с nullreferenceexception. Нужно ли как то указывать dllки на которые используются и которые я не декомпилировал?

    Может какие ключи включить надо?

  6. 6
    Иван Voyager ответил:

    По идее не нужно, возможно проблема в некорректном изменении исходников. Зависит от конкретной сборки. Нужно определить причину ошибки, телепатия не развита)
    Мои ключи, которые я обычно использую:

    "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\ildasm.exe" /OUT=MyDll.h MyDll.dll /ALL

    "c:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe" /DLL MyDll.h /RES:MyDll.res /KEY:MyDllKey.snk /OUTPUT=MyDll1.dll
    (/KEY – если нужен strong name)

  7. 7
    pittsburgh penguins reebok nhl mesh trucker hat ответил:

    pittsburgh penguins reebok nhl mesh trucker hat…

    saint laurent kate chain wallet with tassel in elaphe leathershort dress with lacehigh waisted light blue jeans zarapolo shirt with pocket…

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.