有时返回对象,有时返回对象的序列化

本文关键字:返回 对象 序列化 | 更新日期: 2023-09-27 18:22:08

我有两个非常相似的方法。

public string GetMyObjectInJson(parameters)
{
 MyObject TheObject = new MyObject(); 
 ...lots of work here
 Javascript Serializer = new Javascript Serializer();
 return Serializer.serialize(TheObject); 
}
public MyObject GetMyObject(parameters)
{
 MyObject TheObject = new MyObject(); 
 ...lots of work here
 return TheObject; 
}

我应该如何重写它,以便只有一个方法可以返回两种不同的类型:有时是字符串,有时是对象。

谢谢。

有时返回对象,有时返回对象的序列化

你不应该这样做。您应该有两个方法,这样就可以从调用代码中清楚地了解您想要什么以及您将得到什么。

然而,您可以使用一种方法来完成大部分工作:

public string GetMyObjectInJson(parameters)
{
    MyObject object = GetMyObject();
    Javascript Serializer = new JavascriptSerializer();
    return Serializer.serialize(TheObject); 
}
public MyObject GetMyObject(parameters)
{
     MyObject TheObject = new MyObject(); 
     ...lots of work here
     return TheObject; 
}

然而,这表明实际上MyObject类应该有一个SerializeToJson方法,所以调用者会写:

string json = foo.GetMyObject().SerializeToJson();

请注意,即使不能将一个方法直接链接到另一个方法,也可以有一个包含公共工作的私有方法,该方法将从两个公共方法调用。当你可以重构你的实现时,你不应该让你的公共API变得不那么清晰。