Serialização XML DateTime personalizada

Eu gostaria de poder serializar um DateTime com um fuso horário específico que não seja o servidor nem o horário do cliente. Basicamente, qualquer fuso horário. É possível substituir a serialização DateTime, nos serviços da web .Net2.0?

Eu compilei um xmlschema usando xsd.exe, então tentei usar XmlSchemaImporter.

Os exemplos OnSerialize mostram alterações de valor, mas não alterações no formato de saída.

O XmlSchemaImporter, carregou-o no gac, executou o xsd.exe e gerou o código que possui a classe que eu quero ... mas essa classe é um atributo que acaba não sendo refletido.

[InvalidOperationException: não é possível serializar o membro 'metadataDateTime' do tipo Cuahsi.XmlOverrides.W3CDateTime. XmlAttribute / XmlText não pode ser usado para codificar tipos complexos.]

Código gerado

[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; }
    }
}

Adenda 1: Eu apenas cansei de DateTimeoffset, e isso ainda causa um erro quando a classe é marcada como:

[System.Xml.Serialization.XmlAttributeAttribute(DataType = "dateTime")]
public System.DateTimeOffset metadataDateTime {
    get {
        return this.metadataDateTimeField;
    }
    set {
        this.metadataDateTimeField = value;
    }
}

questionAnswers(3)

yourAnswerToTheQuestion