我无法完成此方法。如何将class作为参数传递并返回相同的类? 这是我遇到的情景
Class A
{
...
}
Class C
{
....
}
Class B
{
A a = getJSONClass(String jsonString, classA?);
C c = getJSONClass(String jsonString, classC?);
public (class?) getJSONClass(String jsonString, class?)
{
MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
DataContractJsonSerializer ser = new DataContractJsonSerializer(class?.type);
return ser.ReadObject(memoryStream) as class?;
}
}
任何帮助??
答案 0 :(得分:3)
从语法上讲,你使用泛型:
public T getJSONClass<T>(String jsonString) where T : class
{
MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
return ser.ReadObject(memoryStream) as T;
}
用法:
A a = getJSONClass<A>(String jsonString);
C c = getJSONClass<C>(String jsonString);
答案 1 :(得分:1)
使用generics:
public T GetDeserializedObject<T>(string jsonString) where T: class
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
return serializer.ReadObject(stream) as T;
}
}
答案 2 :(得分:1)
你不能这样做:
Class A
{
...
}
Class C
{
....
}
Class B
{
A a = (A)getJSONClass(String jsonString, typeof(A));
C c = (C)getJSONClass(String jsonString, typeof(C));
public object getJSONClass(String jsonString, Type type)
{
MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
DataContractJsonSerializer ser = new DataContractJsonSerializer(type);
return ser.ReadObject(memoryStream);
}
}