【发布时间】:2012-10-20 20:25:20
【问题描述】:
我有以下情况,但我无法找到解决方案:
我有多个通过svcutil.exe 工具生成的数据合约代理。我正在尝试序列化包含数据合约代理实例的object[] 实例。尝试以下:
public static string Serialize<T>(T obj)
{
StringBuilder sb = new StringBuilder();
var known = new List<Type>(){typeof(myDataContracClass), typeof(object[])};
DataContractSerializer ser = new DataContractSerializer(typeof(T), known );
ser.WriteObject(XmlWriter.Create(sb), obj);
return sb.ToString();
}
然后通过以下方式使用它:
object[] arrayToSerialize = new object[] { someGuid, myDatacontractProxyInstance};
var serialized = Serialize(arrayToSerialize);
编辑:(进一步描述我的设置)
我放置了以下数据合约属性:
[DataContract(Namespace = "http://mynamespace-uri")]
在 svcutil.exe 的代理生成中,我声明了命名空间/n:*,My.Custom.Namespace,这导致生成的代理具有与数据协定类不同的命名空间。
Offtopic:为什么微软最终会推出如此困难的序列化组件?
【问题讨论】:
-
DataContract命名空间和生成的 C#.NET 类命名空间是不同的东西。 -
@Paciv,当然 - 我从来没有说过他们是 :)
-
你的问题是你的数组对象来自不同的生成代理?
标签: c# wcf serialization svcutil.exe