我有一个名为Validator的抽象类:
public abstract class Validator<T> where T : IValidatable
{
public abstract bool Validate(T input);
}
Run Code Online (Sandbox Code Playgroud)
我有一些具体的实现.一个是AccountValidator:
public class AccountCreateValidator : Validator<IAccount>
{
public override bool Validate(IAccount input)
{
//some validation
}
}
Run Code Online (Sandbox Code Playgroud)
另一个是LoginValidator:
public class LoginValidator : Validator<IAccount>
{
public override bool Validate(IAccount input)
{
//some different validation
}
}
Run Code Online (Sandbox Code Playgroud)
我现在想要创建一个工厂来返回验证器实现的实例.就像是:
public static class ValidatorFactory
{
public static Validator GetValidator(ValidationType validationType)
{
switch (validationType)
{
case ValidationType.AccountCreate:
return new AccountCreateValidator();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我喜欢这样称呼它
Validator myValidator = ValidatorFactory.GetValidator(ValidationType.AccountCreate);
Run Code Online (Sandbox Code Playgroud)
但是它不喜欢返回新的AccountCreateValidator()行,或者我将myValidator声明为Validator而不是 …
我们有一个每晚TeamCity构建版本,它将最新代码发布到我们的测试网站,恢复数据库以匹配生产,然后应用我们在TFS中的任何模式和数据更改.如果此夜间构建失败,则网站将关闭,直到我们手动修复代码和/或数据库脚本并重新启动构建.
我想要的是自动回滚到上一次成功构建,以便尽管有任何构建中断,网站仍然可用.
花了一点时间调查后,这是我提出的解决方案:
我不知道的是如何使回滚构建获得基于标签的版本.
对此或其他解决方案的任何帮助将不胜感激.
干杯.