Если вы ознакомитесь с исходными текстами сценариев # на github, вы увидите примеры того, как это сделать в мире jQuery.
Ответ зависит от того, пытаетесь ли вы просто импортировать существующий скрипт или хотите использовать скрипт # для создания самого миксина.
Если вы хотите просто импортировать, я рекомендую вам проверить в исходном коде проекты jQuery и jQuery.History . jQuery.History представляет миксин истории jQuery (но делает это без каких-либо методов расширения или интерфейсов).
Если вы хотите создать миксин в script #, читайте дальше ... высокоуровневый подход - определить статический класс и аннотировать его атрибутом [Mixin]. В будущем подход изменится на использование методов расширения c #, но этот пользовательский подход - то, что вам нужно на данный момент.
Вернуться к образцу - на https://github.com/nikhilk/scriptsharp/blob/master/samples/PhotoDemo/Gallery/GalleryPlugin.cs вы увидите:
[Mixin("$.fn")]
public static class GalleryPlugin {
public static jQueryObject Gallery(GalleryPluginOptions customOptions) {
...
// Use jQuery.Current to access the "this" object at runtime pointing
// to the object instance whose prototype now contains the mixin methods.
}
}
Это будет сгенерировано в скрипт как:
$.fn.gallery = function(customOptions) {
}
Для справки, способ определения jQuery.Current во встроенной библиотеке jQuery (полный исходный код см. https://github.com/nikhilk/scriptsharp/blob/master/src/Libraries/jQuery/jQuery.Core/jQuery.cs):
[IgnoreNamespace]
[Imported]
[ScriptName("$")]
public sealed class jQuery {
private jQuery() {
}
[ScriptAlias("this")]
[IntrinsicProperty]
public static jQueryObject Current {
get {
return null;
}
}
}
Немного запутано, но, надеюсь, как только вы попробуете это, оно станет простым. Готовый скрипт # предоставляет API и шаблоны для сценариев jQuery, которые упрощают задачу, удаляя механику с переднего плана, что вам необходимо понять при работе с другой средой сценариев.
Надеюсь, это поможет!