Есть ли какая-нибудь библиотека утиного ввода для Silverlight? Есть несколько вариантов для полноценной платформы .NET, но я ищу что-нибудь более легкое.
Библиотека утиного набора текста для Silverlight?
Ответы (5)
Задавая вопрос «Silverlight duck typing», вы имеете в виду автоматическую реализацию интерфейсов со строгой типизацией? Или динамическое создание метаданных объекта с помощью экземпляра объекта?
Если последнее, то рекомендация Энтони верна. Языки со строгой типизацией, работающие в среде 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#DownloadId=69201)
Вы можете рассмотреть возможность использования языка на основе 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. Он позволяет не только статические реализации утиной печати, но и динамические, как Что ж.