這取決於你正在使用什麼綁定(更具體地說,是哪個序列化程序)。如果您使用的是DataContractSerializer
,那麼答案很簡單:什麼都不做。這兩份合同是等同的;
- 明確的名稱
[DataContract(...)]
,如果一個 - 否則類名稱(匹配)
- 在
[DataContract(...)]
明確的XML命名空間如果您正在使用NetDataContractSerializer
:該線數據是通過定義,簡單:你不能。
請注意,客戶端使用的c#名稱空間完全取決於客戶端,並且通常由用於生成類型的工具確定。坦率地說,只要客戶端使用基於合同的串行器(如XmlSerializer
或DataContractSerializer
),那麼客戶端用作c#名稱空間的內容並不重要。
爲了說明這一點:這兩次打印同樣的事情:
using System.Runtime.Serialization;
using System;
namespace A
{
[DataContract] class Foo { }
}
namespace B
{
[DataContract] class Foo { }
}
static class Program
{
static void Main()
{
new DataContractSerializer(typeof (A.Foo)).WriteObject(
Console.OpenStandardOutput(), new A.Foo());
Console.WriteLine();
new DataContractSerializer(typeof (B.Foo)).WriteObject(
Console.OpenStandardOutput(), new B.Foo());
}
}
在這種情況下,我相信你是正確的 - 但是,它不是「顯然是真實的」 - 可以在WCF使用的庫中共享DTO類型 – 2012-02-27 09:32:23