Вопрос не нов, но в сети я не смог найти ответа к сожалению. В общем ситуация следующая,у меня есть класс к примеру:
class MyClass
{
public void MyMethod()
{
Console.WriteLine("MyMethod");
}
}
Задача следующая мне нужно подменить метод MyMethod на другой, новый. Причем мне НЕ требуется динамическая подмена методов,мне нужно просто затереть существующий и заменить новым.
Дело в следующем. я пишу дополнение к одной опер сорс программе и для того что бы мое дополнение было легко переносимо на другие более новые версии этой программы (которые разрабатывают другие разработчики независимо от меня) все стыковки с исходным кодом я реализовал как методы расширения. В итоге весь код дополнения которым я занимаюсь легко переносится на новые версии программы путем добавления двух строк в исходный код. В этой программе есть класс в котором содержится метод который мне нужно затереть, соответственно я не хочу влазить в чужой код напрямую что бы сохранить легкость переноса моих дополнений на новые версии программы. Подскажите можно ли это как то реализовать?
Если сделать что то вроде:
static class MyClassExtencion
{
public static new void MyMethod(this MyClass cl)
{
Console.WriteLine("New method");
cl.MyMethod();
}
}
То это само собой работать не будет, так как метод расширения не затирает изначальный метод... однако хотелось бы сделать как нибудь схожим образом
Сборка персонального компьютера от Artline: умный выбор для современных пользователей