我创建了一个类作为通用的 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()
、ToString()
集合中的 Chameleon 对象未被 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
}
关于c# - 自定义类的 IEnumerable 和 String.Join(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4462079/