1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| Dim myDesignerClass As CodeDom.CodeTypeDeclaration
Dim initializeComponent As CodeDom.CodeMemberMethod
Dim main As CodeDom.CodeEntryPointMethod
Dim con As CodeDom.CodeConstructor
Dim ns As CodeDom.CodeNamespace
Dim root As System.ComponentModel.IComponent
Dim nametable As Hashtable
Dim ds As System.ComponentModel.Design.DesignSurface
Dim idh As System.ComponentModel.Design.IDesignerHost
Code = New CodeDom.CodeCompileUnit
ds = Me.Designer ' Le DesignSurface
ds.Flush()
idh = DirectCast(ds.GetService(GetType(System.ComponentModel.Design.IDesignerHost)), System.ComponentModel.Design.IDesignerHost)
root = idh.RootComponent
nametable = New Hashtable(idh.Container.Components.Count)
ns = New CodeDom.CodeNamespace(Projet_Variable.Nom)
myDesignerClass = New CodeDom.CodeTypeDeclaration
initializeComponent = New CodeDom.CodeMemberMethod
' Imports
ns.Imports.Add(New CodeDom.CodeNamespaceImport("System"))
ns.Imports.Add(New CodeDom.CodeNamespaceImport("System.ComponentModel"))
ns.Imports.Add(New CodeDom.CodeNamespaceImport("System.Windows.Forms"))
myDesignerClass = New CodeDom.CodeTypeDeclaration(root.Site.Name)
myDesignerClass.BaseTypes.Add(root.GetType.FullName)
ns.Types.Add(myDesignerClass)
code.Namespaces.Add(ns)
' Constructeurs
con = New CodeDom.CodeConstructor
con.Attributes = CodeDom.MemberAttributes.Public
con.Statements.Add(New CodeDom.CodeMethodInvokeExpression(New CodeDom.CodeMethodReferenceExpression(New CodeDom.CodeThisReferenceExpression(), "InitializeComponent")))
myDesignerClass.Members.Add(con)
' Main
main = New CodeDom.CodeEntryPointMethod
main.Name = "Main"
main.Attributes = CodeDom.MemberAttributes.Public Or CodeDom.MemberAttributes.Static
main.CustomAttributes.Add(New CodeDom.CodeAttributeDeclaration("System.STAThreadAttribute"))
main.Statements.Add(New CodeDom.CodeMethodInvokeExpression(New CodeDom.CodeMethodReferenceExpression(New CodeDom.CodeTypeReferenceExpression(GetType(System.Windows.Forms.Application)), "Run"), New CodeDom.CodeExpression() {New CodeDom.CodeObjectCreateExpression(New CodeDom.CodeTypeReference(root.Site.Name))}))
myDesignerClass.Members.Add(main)
' InitializeComponent
initializeComponent = New CodeDom.CodeMemberMethod
initializeComponent.Name = "InitializeComponent"
initializeComponent.Attributes = CodeDom.MemberAttributes.Private
initializeComponent.ReturnType = New CodeDom.CodeTypeReference(GetType(Void))
myDesignerClass.Members.Add(initializeComponent)
Dim names As Reflection.AssemblyName() = Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies()
Dim i As Integer = 0
While i < names.Length
Dim assembly As Reflection.Assembly = Reflection.Assembly.Load(names(i))
code.ReferencedAssemblies.Add(assembly.Location)
i += 1
End While
Dim o As CodeDom.Compiler.CodeGeneratorOptions = New CodeDom.Compiler.CodeGeneratorOptions
o.BlankLinesBetweenMembers = True
o.BracingStyle = "VB"
o.ElseOnClosing = False
o.IndentString = " "
Dim swVB As IO.StringWriter = New IO.StringWriter
Dim vb As VBCodeProvider = New VBCodeProvider
vb.GenerateCodeFromCompileUnit(code, swVB, o)
MsgBox(swVB.ToString) |
Partager