题
我有一个在3-4方法中序列化类对象的通用代码,所以我想在所有方法中为该代码创建一个通用函数并调用函数
我正在通过以下代码
进行此操作DataContractJsonSerializer ser = new DataContractJsonSerializer(this.GetType());
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, this);
json = Encoding.Default.GetString(ms.ToArray());
ms.Close();
我想将这个公共代码放在seprate通用函数中,该函数返回Json字符串并接受整个类作为输入参数,因为我将整个类转换为Json对象,我尝试创建函数,如
public string GenerateJsonString(class C1)
但是这给了我关键字“class”的错误说这种类型是必需的
任何人都可以告诉我如何在单独的方法或函数中接受整个类对象
解决方案
你混淆了一个“类”用“对象”。序列化对象,该对象是特定类的实例(也称为“类型”)。
您可以创建一个方法,为所有对象提取.NET基类型的参数,“object”,如下所示:
public static string GenerateJsonString(object o)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(o.GetType());
using (MemoryStream ms = new MemoryStream())
{
ser.WriteObject(ms, o);
json = Encoding.Default.GetString(ms.ToArray());
ms.Close();
return json;
}
}
其他提示
将参数键入“object”。您不能将类作为参数传递,只能传递类的实例 - 在OOP中将其称为“对象”
public string GenerateJsonString(object obj)
如果传递给此方法的所有对象都是从公共基类派生的类的实例,则可以使用多态并编写方法以接受作为基类实例的对象。否则,所有类都派生自 System.Object
。
您可以接受一个对象。没有实例化类,并且无法将其传递给方法。
尝试使用Type而不是class
public string GenerateJsonString(Type t1)
不隶属于 StackOverflow