Является безпараметрическим конструктором «Request DTO», необходимым в ServiceStack - PullRequest
1 голос
/ 10 февраля 2012

Является безпараметрическим конструктором «запроса DTO», необходимого в ServiceStack

Если я закомментирую без параметров параметр

[DataContract]
[RestService("/Competitions/", "GET")]
[RestService("/Competitions/{Id}", "GET")]
public class Competitions
{
    [DataMember]
    public int CompetitionID { get; set; }
    [DataMember]
    public string CompName { get; set; }
    [DataMember]
    public string CompType { get; set; }
//public Competitions()
//{ 

//}

public Competitions(ABC abc)
    {
    this.CompetitionID = abc.abcID;
    this.CompName = abc.CompName;
    this.CompType = abc.CompType;
    }
}

При доступе к странице метаданных я получу исключение «Нет набора параметров для конструктора без параметров» http://localhost/api/xml/metadata?op=Competitions

Трассировка стека

[External Code] 
    ServiceStack.DLL!ServiceStack.WebHost.Endpoints.Metadata.XmlMetadataHandler.CreateMessage(System.Type dtoType = {Name = "Competitions" FullName = "FSI.API.ServiceModel.Competitions"}) Line 17 + 0x8 bytes C#
    ServiceStack.DLL!ServiceStack.WebHost.Endpoints.Metadata.BaseMetadataHandler.ProcessOperations(System.Web.UI.HtmlTextWriter writer = {System.Web.UI.HtmlTextWriter}, ServiceStack.ServiceHost.IHttpRequest httpReq = {ServiceStack.WebHost.Endpoints.Extensions.HttpRequestWrapper}) Line 56 + 0xe bytes    C#
    ServiceStack.DLL!ServiceStack.WebHost.Endpoints.Metadata.BaseMetadataHandler.Execute(System.Web.HttpContext context = {System.Web.HttpContext}) Line 34 C#
    ServiceStack.DLL!ServiceStack.WebHost.Endpoints.Support.HttpHandlerBase.ProcessRequest(System.Web.HttpContext context = {System.Web.HttpContext}) Line 20   C#
[External Code] 

1 Ответ

2 голосов
/ 10 февраля 2012

Для работы XmlSerializer нужен конструктор, вы можете сделать его внутренним, закрытым или защищенным, если хотите.

...