我需要这样做.
public class MyClass{ private static IDictionarydatabaseAccessClasses = new Dictionary (); private static IDictionary DatabaseAccessClasses { get { return DataAccessFactory.databaseAccessClasses; } set { DataAccessFactory.databaseAccessClasses = value; } } }
mmmmmmmm.. 6
使用以下代码:
CSharpCodeProvider codeProvider = new CSharpCodeProvider(); CodeCompileUnit compileUnit = new CodeCompileUnit(); CodeNamespace nameSpace = new CodeNamespace("xy"); compileUnit.Namespaces.Add(nameSpace); CodeTypeDeclaration myClass = new CodeTypeDeclaration("MyClass"); nameSpace.Types.Add(myClass); myClass.TypeAttributes = System.Reflection.TypeAttributes.Class | System.Reflection.TypeAttributes.Public; CodeTypeReference dictionaryType = new CodeTypeReference("IDictionary", new CodeTypeReference(typeof(string)), new CodeTypeReference(typeof(Type))); CodeMemberField myClass_databaseAccessClasses = new CodeMemberField(dictionaryType, "databaseAccessClasses"); myClass_databaseAccessClasses.Attributes = MemberAttributes.Static; myClass.Members.Add(myClass_databaseAccessClasses); CodeMemberProperty myClass_DatabaseAccessClasses = new CodeMemberProperty(); myClass_DatabaseAccessClasses.Name = "DatabaseAccessClasses"; myClass_DatabaseAccessClasses.Type = dictionaryType; myClass_DatabaseAccessClasses.Attributes = MemberAttributes.Static; myClass_DatabaseAccessClasses.GetStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(new CodeTypeReference("DataAccessFactory")), "databaseAccessClasses"))); myClass_DatabaseAccessClasses.SetStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(new CodeTypeReference("DataAccessFactory")), "databaseAccessClasses"), new CodeArgumentReferenceExpression("value"))); myClass.Members.Add(myClass_DatabaseAccessClasses); StringWriter writer = new StringWriter(); codeProvider.GenerateCodeFromCompileUnit(compileUnit, writer, new System.CodeDom.Compiler.CodeGeneratorOptions()); // writer.ToString() contains the C# code
吕迪格
使用以下代码:
CSharpCodeProvider codeProvider = new CSharpCodeProvider(); CodeCompileUnit compileUnit = new CodeCompileUnit(); CodeNamespace nameSpace = new CodeNamespace("xy"); compileUnit.Namespaces.Add(nameSpace); CodeTypeDeclaration myClass = new CodeTypeDeclaration("MyClass"); nameSpace.Types.Add(myClass); myClass.TypeAttributes = System.Reflection.TypeAttributes.Class | System.Reflection.TypeAttributes.Public; CodeTypeReference dictionaryType = new CodeTypeReference("IDictionary", new CodeTypeReference(typeof(string)), new CodeTypeReference(typeof(Type))); CodeMemberField myClass_databaseAccessClasses = new CodeMemberField(dictionaryType, "databaseAccessClasses"); myClass_databaseAccessClasses.Attributes = MemberAttributes.Static; myClass.Members.Add(myClass_databaseAccessClasses); CodeMemberProperty myClass_DatabaseAccessClasses = new CodeMemberProperty(); myClass_DatabaseAccessClasses.Name = "DatabaseAccessClasses"; myClass_DatabaseAccessClasses.Type = dictionaryType; myClass_DatabaseAccessClasses.Attributes = MemberAttributes.Static; myClass_DatabaseAccessClasses.GetStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(new CodeTypeReference("DataAccessFactory")), "databaseAccessClasses"))); myClass_DatabaseAccessClasses.SetStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(new CodeTypeReference("DataAccessFactory")), "databaseAccessClasses"), new CodeArgumentReferenceExpression("value"))); myClass.Members.Add(myClass_DatabaseAccessClasses); StringWriter writer = new StringWriter(); codeProvider.GenerateCodeFromCompileUnit(compileUnit, writer, new System.CodeDom.Compiler.CodeGeneratorOptions()); // writer.ToString() contains the C# code
吕迪格