A question about remove the get and set value in d

2019-08-04 06:24发布

As now I have started to use Script#, I tried to send a data package to server via ajax:

jQuery.AjaxRequest<RespondPackage>(url, new jQueryAjaxOptions("type", "POST", "dataType", "json", "data",  dataSendToServer));

with dataSendToServer is in form of object Type "SendPackage" using get and set accessor, like this:

public class SendPackage
{  private string reportID;
    public string ReportID
    {
        get { return reportID; }
        set { reportID = value; }
    }
    public SendPackage(string reportID)
    {
        this.reportID = reportID;
    }
}

While sending the data to server using ajax after transform to Javascript, it send not only the reportID (the data needed) , but also get_reportID and set_reportID.

I have tried several method to remove the dummy properties of the get and set accessor like Type.DeleteField but it seems doesn't work. Therefore I want to ask if there is any method to treat the data sending to server to remove the property of get and set accessor?

Thanks for your attention.

2条回答
萌系小妹纸
2楼-- · 2019-08-04 06:50

Use a record class, i.e. derive your class from the Record base class.

Record classes don't get defined as a regular class - instead only a factory method representing your ctor is created. The result of the factory is a vanilla object which serializes into a JSON object as you'd expect.

Record classes cannot have methods or properties - just public properties and at most a ctor.

Note that you could also have any class implement a ToJSON method - that gets to override what gets serialized when using the JSON functionality built into the script engine (and presumably jQuery also uses it).

查看更多
老娘就宠你
3楼-- · 2019-08-04 06:52

Why about just make the class as:

public class SendPackage
{  
    public string reportID;

    public SendPackage(string reportID)
    {
        this.reportID = reportID;
    }
}

i.e make the field public and get rid of the property.

查看更多
登录 后发表回答