gpt4 book ai didi

c# - 从接口(interface)派生的通用对象的 XML 序列化列表,,,

转载 作者:数据小太阳 更新时间:2023-10-29 02:14:07 25 4
gpt4 key购买 nike

所以我正在尝试对 List<IObject> 进行 XML 序列化派生自接口(interface),但是 IObjects是通用类型...最好使用代码:

public interface IOSCMethod
{
string Name { get; }
object Value { get; set; }
Type Type { get; }
}

public class OSCMethod<T> : IOSCMethod
{
public string Name { get; set; }
public T Value { get; set; }
public Type Type { get { return _type; } }

protected string _name;
protected Type _type;

public OSCMethod() { }

// Explicit implementation of IFormField.Value
object IOSCMethod.Value
{
get { return this.Value; }
set { this.Value = (T)value; }
}
}

我有一个 IOSCMethods 列表:

List<IOSCMethod>

我通过以下方式向其中添加对象:

        List<IOSCMethod> methodList = new List<IOSCMethod>();
methodList.Add(new OSCMethod<float>() { Name = "/1/button1", Value = 0 });
methodList.Add(new OSCMethod<float[]>() { Name = "/1/array1", Value = new float[10] });

就是这个 methodList 这就是我要序列化的内容。但是每次我尝试时,要么我得到一个“无法序列化接口(interface)”,但是当我实现它时(IOSCMethodOSCMethod<T> 类)实现 IXmlSerializable我遇到了“无法使用无参数构造函数序列化对象。但显然我不能,因为它是一个接口(interface)!蹩脚的裤子。

有什么想法吗?

最佳答案

这是你想要的吗:

[TestFixture]
public class SerializeOscTest
{
[Test]
public void SerializeEmpTest()
{
var oscMethods = new List<OscMethod>
{
new OscMethod<float> {Value = 0f},
new OscMethod<float[]> {Value = new float[] {10,0}}
};
string xmlString = oscMethods.GetXmlString();
}
}

public class OscMethod<T> : OscMethod
{
public T Value { get; set; }
}

[XmlInclude(typeof(OscMethod<float>)),XmlInclude(typeof(OscMethod<float[]>))]
public abstract class OscMethod
{

}

public static class Extenstion
{
public static string GetXmlString<T>(this T objectToSerialize)
{
XmlSerializer xmlSerializer = new XmlSerializer(objectToSerialize.GetType());
StringBuilder stringBuilder = new StringBuilder();
string xml;
using (var xmlTextWriter = new XmlTextWriter(new StringWriter(stringBuilder)))
{
xmlSerializer.Serialize(xmlTextWriter, objectToSerialize);
xml = stringBuilder.ToString();
}
return xml;
}
}

关于c# - 从接口(interface)派生的通用对象的 XML 序列化列表,,,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com