小编jfc*_*c37的帖子

工厂创建泛型类

我有一个名为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而不是 …

c# generics factory-pattern fluentvalidation

5
推荐指数
1
解决办法
1354
查看次数

为TeamCity创建回滚构建

我们有一个每晚TeamCity构建版本,它将最新代码发布到我们的测试网站,恢复数据库以匹配生产,然后应用我们在TFS中的任何模式和数据更改.如果此夜间构建失败,则网站将关闭,直到我们手动修复代码和/或数据库脚本并重新启动构建.

我想要的是自动回滚到上一次成功构建,以便尽管有任何构建中断,网站仍然可用.

花了一点时间调查后,这是我提出的解决方案:

  1. 每晚构建运行,在TFS中创建一个新标签(类似于Nightly-build- {build number})
  2. 创建一个新的TeamCity构建,在每晚构建运行后触发
  3. 找到最后一个成功的每晚构建号码
  4. 在TFS中获取与该内部版本号标签相关的版本
  5. 回滚构建(如果每晚构建成功完成则无关紧要)

我不知道的是如何使回滚构建获得基于标签的版本.

对此或其他解决方案的任何帮助将不胜感激.

干杯.

teamcity tfs

5
推荐指数
1
解决办法
2950
查看次数

标签 统计

c# ×1

factory-pattern ×1

fluentvalidation ×1

generics ×1

teamcity ×1

tfs ×1