我希望能夠序列化具有不是服務器的特定時區的DateTime,也不是客戶端時間。基本上,任何時區。 是否可以在.Net2.0 webservices中重寫DateTime序列化?自定義日期時間XML序列化
我使用xsd.exe編譯xmlschema,所以我嘗試了使用XmlSchemaImporter。
OnSerialize示例顯示值更改,但不更改輸出格式。
XmlSchemaImporter,將其加載到gac中,運行xsd.exe,並生成具有我想要的類的代碼...但該類是一個屬性,最終無法反映出來。
[InvalidOperationException異常:能 類型Cuahsi.XmlOverrides.W3CDateTime的不 連載構件 'metadataDateTime'。 XmlAttribute/XMLTEXT不能被用來 編碼複雜類型]
生成的代碼
[System.Xml.Serialization.XmlAttributeAttribute()]
public Cuahsi.XmlOverrides.W3CDateTime dateTime {
get {
return this.dateTimeField;
}
set {
this.dateTimeField = value;
}
}
XmlSchemaImporter
public class ImportW3CTime :
System.Xml.Serialization.Advanced.SchemaImporterExtension
{
public override string ImportSchemaType(string name, string ns,
XmlSchemaObject context, XmlSchemas schemas,
XmlSchemaImporter importer, CodeCompileUnit compileUnit,
CodeNamespace mainNamespace, CodeGenerationOptions options,
CodeDomProvider codeProvider)
{
if (XmlSchema.Namespace == ns)
{
switch (name)
{
case "dateTime":
string codeTypeName = typeof(W3CDateTime).FullName;
CodeTypeDeclaration cls =
new CodeTypeDeclaration("W3CDateTime");
cls.IsStruct = true;
cls.Attributes = MemberAttributes.Public;
cls.BaseTypes.Add("dateTime");
mainNamespace.Types.Add(cls);
return codeTypeName;
default: return null;
}
}
else { return null; }
}
}
附錄1: 我剛累DATETIMEOFFSET,那仍然會導致錯誤,當類標記爲:
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "dateTime")]
public System.DateTimeOffset metadataDateTime {
get {
return this.metadataDateTimeField;
}
set {
this.metadataDateTimeField = value;
}
}
你有沒有找到一個解決辦法? – 2011-01-30 06:38:05