我有两种非常相似的方法。
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;
}
我应该如何重写它,以便我只有一个方法可以返回2种不同的类型:有时是字符串,有时是对象。
感谢。
答案 0 :(得分:2)
你不应该。你应该有两种方法,这样就可以从调用代码中清楚地知道你想要什么以及你会得到什么。
但是,您可以使用一种方法完成大部分工作:
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不那么清晰。