servicestack,C#,servicestack" /> servicestack,C#,servicestack" />

C# ServiceStack自动查询部分响应返回不需要的GUID、int等

C# ServiceStack自动查询部分响应返回不需要的GUID、int等,c#,servicestack,C#,servicestack,我正在处理ServiceStack对AutoQuery的部分响应,代码片段如下: public class SalesOrderServices : MyService { Utilities.RequestUtilities utilities = new Utilities.RequestUtilities(); public object Any(SalesOrdersGet request) { Strin

我正在处理ServiceStack对AutoQuery的部分响应,代码片段如下:

public class SalesOrderServices : MyService
    {
        Utilities.RequestUtilities utilities = new Utilities.RequestUtilities();

        public object Any(SalesOrdersGet request)
        {
            String qString = GetSelectString(base.Request);

            var q = AutoQuery.CreateQuery(request, Request.GetRequestParams());

            if (!qString.IsNullOrEmpty())
            {
                q.Select(qString);
            }

            return AutoQuery.Execute(request, q);
        }
它继承了MyService

namespace WombatWS.ServiceInterface.Sales
{
    public class MyService : Service
    {
        public IAutoQuery AutoQuery { get; set; }

        public String GetSelectString(IRequest request)
        {
            String qString = "";

            if (!request.QueryString["fields"].IsNullOrEmpty())
            {
                String sFields = request.QueryString["fields"].ToString();
                String[] properties = sFields.Split(',');

                foreach (String s in properties)
                {
                    if (!s.Equals(properties.Last().ToString()))
                    {
                        qString += s + ",";
                    }
                    else
                    {
                        qString += s;
                    }
                }
            }
            return qString;
        }
    }
}
我注意到除了我在
?field={field1},{field2}…
中输入的有趣字段外,不需要的日期时间将按原样返回,所有int、GUID类型也将以0,0000-000000000-0000-00000的形式返回。如何摆脱它们?谢谢。

一个
Guid
(像一个整数)是一个值类型,每个值类型都必须有一个值,Guid的默认值类型是
newguid()
,它是
00000000-0000-0000-000000000000

如果不希望值类型发出值,则需要使用可为空的
Guid?
。或者,您可以将ServiceStack文本序列化程序配置为不发出具有以下默认值的值类型:

JsConifg.ExcludeDefaultValues = true;
另一个选项是使用默认值自定义序列化,例如:

class Poco
{
     public Guid Guid { get; set; }

    public bool? ShouldSerialize(string fieldName)
    {
        return fieldName == "Guid" ? Guid != default(Guid) : true;
    }
}