我有三节课。 B和C. A和B均来自C(C具有OAuth属性),A和B都具有不同于C属性的不同属性
我有一个设置A和B的OAuth属性的函数,但由于它们是不同的类型,我通过该方法传入一个对象。然后我检查A是A还是B是B,但我不知道在哪里设置OAuth属性(我不想复制我的代码)
public string SerializeForAPI(object myObject)
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
if (myObject is A)
{
A data = (A)myObject;
}
else if (myObject is B)
{
B data = (B)myObject;
}
// these are obviously not set because the object is within the if statement
data.oauth_consumer_key = this.ConsumerKey;
data.oauth_token = this.Token;
string serialized = jsonSerializer.Serialize(data);
...
}
答案 0 :(得分:3)
如果你知道C
将永远是它的子类,只需将其转换为myObject
:
C data = (C) myObject;
data.oauth_consumer_key = this.ConsumerKey;
// etc.
答案 1 :(得分:0)
该方法应接受C
类型的对象,而不是object
类型的对象。
public string SerializeForAPI(C myObject)
现在,您可以将A
或B
实例传入此方法,并且该方法可以确保传入其中的任何内容都包含oauth_consumer_key
和{{1成员,所以这个方法可以做这个类型所需的一切。如果没有oauth_token
类型的参数,那么即使可能也无法传入无效的对象。