3

将 ServiceStack.NET 与 Silverlight 一起使用的建议方法是使用 Linked-Project 插件。这启用了两个同步项目及其源,一个用于 Silverlight,一个用于 .NET 3.5+。

但是当涉及到验证时,这有点烦人。ServiceStack 正在使用 FluentValidation,这很酷。但它改变了命名空间。所以我最终得到:

using MyNamespace.Model;

// HERE ----------------------------
#if SILVERLIGHT
using FluentValidation;
#else
using ServiceStack.FluentValidation;
#endif
//TO HERE------------------------

namespace HR.RoBP.Contracts.Validators.Model
{
    public class CustomerValidator : AbstractValidator<Customer>
    {
        public CustomerValidator()
        {
            RuleFor(r => r.Name).NotEmpty().NotNull();
        }
    }
}

这并不多,但是每次编写新的验证器时都会很烦人。我经常忘记它,编译,有错误,修复它。我知道 ServiceStack.NET 上的 FluentValidation 发生了一些变化。

但它必须在单独的命名空间中吗?

我认为保持代码文件清洁符合服务堆栈的利益。但是在客户端和服务器上使用相同的验证迫使我这样做。

如果有一种优雅的方法来解决这个问题,我很想听听。

4

1 回答 1

2

不幸的是,您无法设置项目范围的命名空间别名。但是,您可以尝试为您的验证器类编写一个内置该样板代码的模板,并且您可以轻松地单击添加 -> 新项目 -> 您的验证器模板。

于 2013-02-27T16:00:34.583 回答