Исправление обезьян в C # - PullRequest
10 голосов
/ 27 декабря 2010

Можно ли расширять или модифицировать код класса C # во время выполнения?

Мой вопрос конкретно касается Monkey Patching / Duck Punching или Meta Object Programming (MOP), как это происходит в таких языках сценариев,как Groovy, Ruby и т. д.

Ответы [ 3 ]

7 голосов
/ 27 декабря 2010

Возможно ли расширить или изменить код класса C # во время выполнения?

Нет, это невозможно сделать в .NET. Вы можете написать производные классы и переопределить методы (если они виртуальные), но вы не можете изменить существующий класс. Просто представьте, возможно ли то, что вы спрашивали: вы можете изменить поведение некоторых существующих системных классов, таких как System.String.

Вы также можете взглянуть на Методы расширения , чтобы добавить функциональность в существующий класс.

3 голосов
/ 27 декабря 2010

Вы можете добавить функциональность, но вы не можете изменить или удалить функциональность.

2 голосов
/ 27 декабря 2010

Вы можете расширить классы, добавив дополнительные методы, но вы не можете переопределить их, потому что добавленные методы всегда имеют более низкий приоритет, чем существующие.

Для получения дополнительной информации, проверьте Методы расширения в программировании на C #Руководство.

...