I am using a Generic Class as a Response Data Contract. All is good and this is streamlining the design of my WCF service significantly.
Each request is given a standard response object with the following signature:
- Status (Enum)
- Message (String)
- Result (T)
Below is the Response Class:
[DataContract] public class Response<T> { public Response() {} public Response(T result) { this.result = result; if (result != null) { this.status = Status.StatusEnum.Success; } else { this.status = Status.StatusEnum.Warning; } } public Response(T result, Status.StatusEnum status) { this.status = status; this.message = message; } public Response(T result, Status.StatusEnum status, string message) { this.status = status; this.message = message; this.result = result; } [DataMember] public Status.StatusEnum status { get; set; } [DataMember] public string message { get; set; } [DataMember] public T result { get; set; } }
And this works brillantly. Only problem I have is that the WCF Client is given a really crappy name for this object ‘ResponseOfAccountnT9LOUZL’
Is there a way to get around this issue?
Should I be using this class as just a Abstract class which is inherited? I’d rather not have multiple classes cluttering my code.
Ok found the Answer
You can specify the Serialised version using the following syntax:
So if I had a Class called Response which takes a Generic T parameter I would use