ServiceStack响应默认值

时间:2013-10-14 03:37:52

标签: c# servicestack

[Default]数据注释与ORMLite一起使用。但是,它不适用于响应的默认值。是否有类似于响应DTO的[Default]属性?

考虑以下代码:

[Route("api/hello")]
public class Hello {
    public string Ping { get; set; }
}
public class HelloResponse {
    public ResponseStatus ResponseStatus { get; set; }
    [Default(typeof(string), "(nothing comes back!)")]
    public string Pong { get; set; }
}

我希望Response DTO Pong属性具有默认值“(没有回来!)”而不是null。

1 个答案:

答案 0 :(得分:6)

只需在构造函数中设置它。 ServiceStack中的DTO是普通的C#对象。没什么特别的。

public class HelloResponse 
{
    public HelloResponse() 
    {
        this.Pong = "(nothing comes back!)";
    }

    public ResponseStatus ResponseStatus { get; set; }
    public string Pong { get; set; }
}

类的构造函数将始终在对象初始值设定项中设置的任何属性之前运行:

var resp = new HelloResponse();
Console.WriteLine(resp.Pong); // "(nothing comes back!)"

resp = new HelloResponse 
{
    Pong = "Foobar";
};
Console.WriteLine(resp.Pong); // "Foobar"