У меня есть класс следующим образом.
public class CommonResponse<T>
{
public HttpStatusCode ResponseCode { get; set; }
public string ResponseMessage { get; set; }
public T data { get; set; }
}
есть следующая опция.
//1.
CommonResponse<string> obj1=new CommonResponse<string>(){ResponseCode=200, ResponseMessage="OK", data=null};
//2.
CommonResponse<string> obj2=new CommonResponse<class1>(){ResponseCode=200, ResponseMessage="OK", data=new class1{p1="", p2=null, p3=null}};
//3.
CommonResponse<string> obj3=new CommonResponse<class2>(){ResponseCode=200, ResponseMessage="OK", data=null};
Я ищу код, который преобразует каждое нулевое значение в значение по умолчанию. значения по умолчанию следующие:
1 type (string) = string.empty;
2 type (int) = 0;
et c.
я пытаюсь следующий код. но он не работает.
public class CommonResponse<T>
{
private T _data { get; set; }
public HttpStatusCode ResponseCode { get; set; }
public string ResponseMessage { get; set; }
public T data
{
get
{
if (_data != null)
{
PropertyInfo[] properties =
_data.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var item in properties)
{
if (item.PropertyType == typeof(string))
{
var value = item.GetValue(_data, null);
if (value == null)
{
item.SetValue(_data, Convert.ChangeType(string.Empty, item.PropertyType), null);
}
}
if (item.PropertyType == typeof(int))
{
var value = item.GetValue(_data, null);
if (value == null)
{
item.SetValue(_data, Convert.ChangeType(0, item.PropertyType), null);
}
}
}
return _data;
}
else
{
return (T)Convert.ChangeType(string.Empty, typeof(T));
}
}
set
{
_data = value;
}
}
}
мне нужен следующий вывод
//1.
obj1={ResponseCode=200, ResponseMessage="OK", data=""};
//2.
obj2={ResponseCode=200, ResponseMessage="OK", data=new class1{p1="", p2="", p3=0}};
//3.
obj3={ResponseCode=200, ResponseMessage="OK", data=""};
например
public class class1
{
public string p1{get;set;}
public string p1{get;set;}
public int? p3{get;set;}
}
CommonResponse<string> obj2=new CommonResponse<class1>(){ResponseCode=200, ResponseMessage="OK", data=new class1{p1="hello", p2=null, p3=null}};
var json = new JavaScriptSerializer().Serialize(obj2);
Console.WriteLine(json);
вывод следующий
{"ResponseCode": "200", "ResponseMessage": "OK", данные: {"p1": "hello", "p2": null, "p3": null}}
Есть два пустых поля p2 и p3
Мне нужно, чтобы каждое нулевое значение преобразовывалось в пустую строку. желаемый вывод выглядит следующим образом.
{"ResponseCode": "200", "ResponseMessage": "OK", данные: {"p1": "hello", "p2": "", "p3 ":" 0 "}}