using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Runtime.Serialization;
+using System.Xml.Schema;
+using System.Xml.Serialization;
// only for Driver
using Microsoft.CSharp;
// Type
dsType = new CodeTypeDeclaration (opts.DataSetName (ds.DataSetName, gen));
dsType.BaseTypes.Add (TypeRef (typeof (DataSet)));
+ dsType.BaseTypes.Add (TypeRef (typeof (IXmlSerializable)));
// .ctor()
dsType.Members.Add (CreateDataSetDefaultCtor ());
// ReadXmlSerializable()
dsType.Members.Add (CreateDataSetReadXmlSerializable ());
+*/
// GetSchemaSerializable()
dsType.Members.Add (CreateDataSetGetSchemaSerializable ());
-*/
+
+ dsType.Members.Add (CreateDataSetGetSchema ());
dsType.Members.Add (CreateDataSetInitializeClass ());
dsType.Members.Add (CreateDataSetInitializeFields ());
dsType.Members.Add (CreateDataSetSchemaChanged ());
return method;
}
+ private CodeMemberMethod CreateDataSetGetSchema ()
+ {
+ CodeMemberMethod m = new CodeMemberMethod ();
+ m.PrivateImplementationType = TypeRef (typeof (IXmlSerializable));
+ m.Name = "GetSchema";
+ m.ReturnType = TypeRef (typeof (XmlSchema));
+ m.Statements.Add (Return (MethodInvoke ("GetSchemaSerializable")));
+
+ return m;
+ }
+
+ private CodeMemberMethod CreateDataSetGetSchemaSerializable ()
+ {
+ CodeMemberMethod m = new CodeMemberMethod ();
+ m.Attributes = MemberAttributes.Family |
+ MemberAttributes.Override;
+ m.Name = "GetSchemaSerializable";
+ m.ReturnType = TypeRef (typeof (XmlSchema));
+
+ m.Statements.Add (VarDecl (typeof (StringWriter), "sw",
+ New (typeof (StringWriter))));
+ m.Statements.Add (Eval (MethodInvoke ("WriteXmlSchema", Local ("sw"))));
+ m.Statements.Add (Return (MethodInvoke (
+ TypeRefExp (typeof (XmlSchema)),
+ "Read",
+ New (typeof (XmlTextReader),
+ New (typeof (StringReader),
+ MethodInvoke (Local ("sw"),
+ "ToString"))),
+ Const (null))));
+
+ return m;
+ }
+
private CodeMemberMethod CreateDataSetInitializeClass ()
{
CodeMemberMethod m = new CodeMemberMethod ();