【发布时间】:2014-01-08 10:55:44
【问题描述】:
我正在尝试从 WCF 服务返回 JSON 化的匿名类型。
我已经成功了,但我正在寻找更好的选择..
// In IService
[OperationContract]
[FaultContract(typeof(ProcessExecutionFault))]
[Description("Return All Room Types")]
[WebInvoke(UriTemplate = "/GetAllRoomTypes", Method = "GET", RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
Stream GetAllRoomTypes();
// In Service Implementation
[LogBeforeAfter]
Stream GetAllRoomTypes()
{
try
{
var allRoomTypes = Helper.GetAllRoomTypes();
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(allRoomTypes);
writer.Flush();
stream.Position = 0;
return stream;
}
catch (Exception ex)
{
TableLogger.InsertExceptionMessage(ex);
return null;
}
}
// In Business Logic:
public string GetAllRoomTypes(){
try
{
return CustomRetryPolicy.GetRetryPolicy().ExecuteAction(() =>
{
using (var context = new DatabaseEntity())
{
var retResult = from v in context.RoomMasters select new { Id = v.RoomTypeID, Type = v.RoomType };
var retResult1 = retResult.ToJson();
return retResult1;
}
}
);
}
catch (Exception ex)
{
Trace.Write(String.Format("Exception Occured, Message: {0}, Stack Trace :{1} ", ex.Message, ex.StackTrace));
return null;
}
}
我的问题是,有没有更好的方法来做到这一点?
【问题讨论】:
标签: c# json wcf rest anonymous-types