Утиная библиотека для Silverlight?
Есть ли какая-нибудь библиотека утки для Silverlight? Есть несколько вариантов для полноценного.NET Framework, но я ищу что-то более легкое.
5 ответов
Задавая вопрос "Утилизация Silverlight", вы ссылаетесь на автоматическую реализацию интерфейсов со строгой типизацией? Или динамическое создание метаданных объекта с помощью экземпляра объекта?
Если это последнее, рекомендация Энтони точная. Языки со строгой типизацией, работающие на CLR (C# и VB.NET), не могут поддерживать настоящую динамическую типизацию с использованием утиной функции. Таким образом, вы можете использовать IronRuby или IronPython, которые поставляются как часть проекта Silverlight DLR.
Если вы ищете первое, то вы ищите насмешливую библиотеку. Silverlight поддерживает множество фреймворков с открытым исходным кодом.
Moq - http://code.google.com/p/moq/ (скачать: http://moq.googlecode.com/files/Moq.Silverlight.4.0.812.4-bin.zip)
RhinoMocks - http://ayende.com/projects/rhino-mocks.aspx (скачать: http://ayende.com/20/section.aspx/download/230)
AutoFac - http://code.google.com/p/autofac/ (скачать: http://autofac.googlecode.com/files/Autofac-1.4.4.572-SL3.zip)
TypeMock / SilverUnit - http://cthru.codeplex.com/ (скачать: http://cthru.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27748)
Вы можете рассмотреть возможность использования языка на основе DLR, такого как Python, в Silverlight
В зависимости от вашей интерпретации утки, я надеюсь, что это произойдет в C# 4.0 и dynamic
когда это станет доступно в Silverlight. Затем вы можете выбрать, какие биты имеют тип утка (dynamic
) против статического типа (все остальное). Все в C#.
dynamic duck = /* pretty much anything */
duck.Quack();
Я недавно создал утилиту, которую я называю "DynamicWrapper". Он использует Reflection.Emit для генерации класса-обёртки на лету, который реализует интерфейс - способ добиться утиной типизации в C#.
К сожалению, это не работает в Silverlight. Он работает очень хорошо в.Net 3.5, и мои тесты прошли в моей среде SL, но во время выполнения SL я получаю исключение безопасности.
У меня не было времени выяснить это, но код довольно прост. Может быть, этот код может указать вам правильное направление?
ImpromptuInterface поддерживает Silverlight 4. Он позволяет не только вводить статические реализации, но и динамические.