2 // System.ComponentModel.Design.Serialization.TypeCodeDomSerializer
5 // Ivan N. Zlatev (contact i-nZ.net)
7 // (C) 2007 Ivan N. Zlatev
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using System.Collections;
34 using System.ComponentModel;
35 using System.ComponentModel.Design;
39 namespace System.ComponentModel.Design.Serialization
41 public class TypeCodeDomSerializer : CodeDomSerializerBase
44 public TypeCodeDomSerializer ()
48 public virtual CodeTypeDeclaration Serialize (IDesignerSerializationManager manager, object root, ICollection members)
51 throw new ArgumentNullException ("root");
53 throw new ArgumentNullException ("manager");
55 RootContext rootContext = new RootContext (new CodeThisReferenceExpression (), root);
56 StatementContext statementContext = new StatementContext ();
58 statementContext.StatementCollection.Populate (members);
59 statementContext.StatementCollection.Populate (root);
60 CodeTypeDeclaration declaration = new CodeTypeDeclaration (manager.GetName (root));
62 manager.Context.Push (rootContext);
63 manager.Context.Push (statementContext);
64 manager.Context.Push (declaration);
66 if (members != null) {
67 foreach (object member in members)
68 base.SerializeToExpression (manager, member);
70 base.SerializeToExpression (manager, root);
72 manager.Context.Pop ();
73 manager.Context.Pop ();
74 manager.Context.Pop ();
79 // TODO - http://msdn2.microsoft.com/en-us/library/system.componentmodel.design.serialization.typecodedomserializer.deserialize.aspx
81 public virtual object Deserialize (IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
83 throw new NotImplementedException ();
86 protected virtual CodeMemberMethod GetInitializeMethod (IDesignerSerializationManager manager, CodeTypeDeclaration declaration, object value)
89 throw new ArgumentNullException ("value");
90 if (declaration == null)
91 throw new ArgumentNullException ("declaration");
93 throw new ArgumentNullException ("manager");
95 return new CodeConstructor ();
98 protected virtual CodeMemberMethod[] GetInitializeMethods (IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
101 throw new ArgumentNullException ("manager");
102 if (declaration == null)
103 throw new ArgumentNullException ("declaration");
105 return (new CodeMemberMethod[] { new CodeConstructor () });