WCF VAB - 如何针对不同的服务方法在同一dto上实现不同的验证?

时间:2014-06-18 08:33:05

标签: c# wcf validation

我有一个UserDto用作两种不同服务方法中的请求dto。 一个叫做Create,另一个叫做Update。

[OperationContract] 
[FaultContract(typeof(ValidationFault))] 
int Create(UserDto request);

[OperationContract] 
[FaultContract(typeof(ValidationFault))] 
void Update(UserDto request);

为简洁起见,我们假设以下UserDto。现在,当调用服务方法Create时,我希望根据验证器属性验证UserName和EmailAddress,并且它按预期工作。但是在Update的情况下,我只希望验证EmailAddress,不应该进行UserName验证。有没有办法做到这一点?

我不想写另一个dto,因为有很多用例需要UserdtD,我不想在多个地方重复同样的事情。

[DataContract]
Public Class UserDto {
    [DataMember]
    public int UserID;

    [DataMember]
    [NotNullValidator]
    public string UserName;

    [DataMember]
    [NotNullValidator]
    public string EmailAddress;
}

1 个答案:

答案 0 :(得分:0)

据我所知,[NotNullValidator]方法无法关闭UserDto上的Updat。但你可以通过这样做来缩小重复:

[DataContract]
Public Class UserUpdateDto : UserDto {

    [DataMember]
    public new string EmailAddress;
}
void Update(UserUpdateDto  request);