Я знаю, что это старая тема, но я также хотел бы представить проект с открытым исходным кодом, над которым я сейчас работаю: mixinSharp .
Это расширение рефакторинга на основе Roslyn для Visual Studio 2015, которое добавляет поддержку миксинов в C #, генерируя необходимый код делегирования.
Например, допустим, у вас есть следующий миксин-код, который вы хотите использовать повторно:
// mixin class with the code you want to reuse
public class NameMixin
{
public string Name { get; set; }
public void DoSomething() { }
}
И данный дочерний класс, в который вы хотите включить свой миксин:
// child class where the mixin should be included
public class Person
{
// reference to the mixin
private NameMixin _name = new NameMixin();
}
Если вы выполните шаг рефакторинга mixinSharp в поле NameMixin _name
, расширение автоматически добавит весь клейкий код, необходимый для включения mixin в ваш класс:
public class Person
{
// reference to the mixin
private NameMixin _name = new NameMixin();
public string Name
{
get { return _name.Name; }
set { _name.Name = value; }
}
public void DoSomething() => _name.DoSomething();
}
Помимо этого, в mixinSharp есть некоторые дополнительные такие функции, как внедрение конструктора для экземпляров mixin, реализация интерфейсов с помощью mixin и многое другое.
Источники доступны на github , а двоичные файлы (скомпилированное расширение Visual Studio) доступны в Visual Studio Gallery .
Странно. Согласно это , вы добавляете
IF 1=0 BEGIN
SET FMTONLY OFF
END
к SP сразу после части AS SP, и это работает. У Visual Studio теперь нет проблем с этим. Я понятия не имею, почему это работает так или почему это сработает, но это так.