2009-06-17 3 views
1

Может ли кто-нибудь сказать мне, возможно ли его повторное использование класса C# в IronPython? Если у меня есть класс C#, могу ли я обезопасить его от IronPython?Redeclare .net classes в IronPython

+0

Как пояснение, я хочу знать, как использовать классы monkey-patch C# из IronPython. –

ответ

0

Вы не можете патч обезьяны от IronPython. IronPython рассматривает все классы .NET так же, как CPython рассматривает встроенные типы: они не могут быть заражены обезьяной. IronRuby, с другой стороны, поддерживает это.

-1

Почему бы вам не обновить его? Разве не имеет смысла subclass it или просто сделать совершенно новый класс?

EDIT: Дайте свое пояснение, я думаю, что вам действительно нужна правильная инверсия структуры управления (IOC), например Castle Windsor. В принципе, у вас есть интерфейс базы данных, а затем настройте структуру IOC для внедрения реальной базы данных для производства и макетирования базы данных для тестирования.

+0

Я хочу переопределить конструктор, потому что класс пытается получить доступ к базе данных в конструкторе и затрудняет модульный тест. С помощью redeclaring конструктора я могу указать класс на базу данных макета, и блок протестирует его, не попав в фактическую базу данных. Спасибо, что ответили. –

0

Вы можете обезьян-патч от IronPython, но IPy - единственная среда, которая будет уважать ваши изменения; т. е. если вы попытались высмеять File.Create из IronPython, это будет нормально работать для любого кода IPy, но если вы вызвали метод C#, который называется File.Create, он получит реальный, а не макет.

+0

Как вы это делаете? Когда я пробую это на своих собственных классах, я получаю это сообщение: AttributeError: атрибут 'methodName' объекта 'className' доступен только для чтения –

Смежные вопросы