有没有办法告诉WCF在返回时序列化整个类?我是否真的必须将DataMember添加到每个属性?
错误代码非常糟糕,ERR_CONNECTION_RESET有许多原因,我在其他问题上找到的原因与大型Web服务调用的MaxRequestLength太小有关.我返回的数据只有几个KB,所以这不是问题.
这是我的界面代码
[WebGet(RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "GetReportByID?ReportID={ReportID}")]
[OperationContract]
UsageReport GetReportByID(int ReportID);
Run Code Online (Sandbox Code Playgroud)
这是实施
public UsageReport GetReportByID(int ReportID)
{
return new UsageReport(ReportID);
}
Run Code Online (Sandbox Code Playgroud)
这是UsageReport的类代码
[DataContract]
public class UsageReport
{
[DataMember]
List<UsageItem> RL;
public UsageReport(int reportID)
{
RL = new List<UsageItem>();
using (SqlDataReader dr = DBUtility.ExecuteReader(cmd, "DBString"))
{
while (dr.Read())
{
ItemNumber = dr["ItemID"] as int? ?? 0;
RL.Add(new UsageItem(ItemNumber));
}
dr.Close();
}
}
public class UsageItem
{
int ItemNumber;
public UsageItem(int ItemNumber)
{
this.ItemNumber = …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些 json 反序列化为一些继承自 Reactive UI 的 ReactiveObject 类的简单对象。由于某种原因,那里的房产永远不会被填满。使用 POCO 可以正常工作,不会出现任何问题。
class Program
{
class Profile
{
public string Name { get; set; }
}
class ReactiveProfile : ReactiveObject
{
private string _name;
public string Name
{
get => _name;
set => this.RaiseAndSetIfChanged(ref _name, value);
}
}
static void Main(string[] args)
{
var profiles = new List<Profile>()
{
new Profile() {Name = "Foo"},
new Profile() {Name = "Bar"}
};
var path = @"C:\temp\profiles.json";
File.WriteAllText(path,
JsonConvert.SerializeObject(profiles.ToArray(),
Formatting.Indented,
new StringEnumConverter()),
Encoding.UTF8);
// works …Run Code Online (Sandbox Code Playgroud)