我创建了一个充当通用DataType类的类。之所以这样做,是因为我需要将混杂类型的对象的集合序列化为JSON,并且我希望能够将完整的数据集创建为一个集合。像这样:
JSON.Serialize(new []
{
new Chameleon("aDate", DateTime.Now),
new Chameleon("aString", "FUBAR")
});
以下是我的实现的简化版本:
class Chameleon
{
private String _type;
private String _key;
private Object _value;
public Chameleon(String key, String value)
{
_type = "string";
_key = key;
_value = value;
}
public Chameleon(String key, DateTime value)
{
_type = "string";
_key = key;
_value = value;
}
public new String ToString()
{
// returns internal data, formatted data according to _type
}
}
一切都很好,但是当我尝试使用
String.Join()
加入(或尽量重复使用)变色龙的集合时,该集合中Chameleon对象上的ToString()
不会被String.Join()
方法调用;相反,我得到了通常的命名空间+类名字符串返回。为什么
String.Join()
不调用我的自定义ToString()
实现?我想念什么?这是我在做什么:
JSON.Serialize(String.Join<Chameleon>(",", new []
{
new Chameleon("aDate", DateTime.Now),
new Chameleon("aString", "FUBAR")
}));
最佳答案
我的猜测是,发生这种情况是因为您将ToString
定义为new
方法,而不是覆盖它。请尝试以下代码:
public override String ToString()
{
// returns internal data, formatted data according to _type
}