Это не может быть сделано в C#; необходимо объявить новый тип класса. Самым близким можно войти в C#, является, вероятно, именованный вложенный класс:
public class StartHere{
private class Foo : Example {
public override void doStuff()
{
Console.WriteLine("did stuff");
}
}
public static void Main(string[] args){
Example x = new Foo();
x.doStuff();
}
}
Итак, что мы обычно делаем, так это создаем ветвь "build", которую строит CI-сервер. Мы объединяем все, что мы хотим включить в ночную сборку, в ветку сборки, и она будет развиваться там.
На самом деле мы не разрабатываем ветку сборки, но у нас есть ветки разработки, которые используются для сохранения изменений которые не готовы к выпуску в тестовые среды.
Основные рекомендации, которые я бы дал для CI (больше похоже на практические правила):
Некоторые из моего опыта: Наш CI получает код из HEAD / MASTER. Здесь мы используем git, поэтому нашим разработчикам всегда очень легко работать с ветками и поддерживать их синхронизацию, но они могут только зафиксировать стабильный код в HEAD / MASTER.
Правильный ответ зависит от того, как вы организовываете свой код.
Если основная ветка всегда должна быть стабильной / работающей, тогда вы просто строите из нее.
Если у вас есть ветка, которая является "золотой" веткой, то ...
В нашем магазине у нас есть три вида ветки: