Re[3]: PropertyGrid и динамические свойства
От: Аноним  
Дата: 17.05.10 19:30
Оценка: -1 :)
Здравствуйте, lutikman, Вы писали:

L>Не отказался бы от примера в виде исходного кода.



        private string GenerateClassCode()
        {
            StringBuilder sb = new StringBuilder();
            
            for (int n = 0; n < 6; n++)
            {
                sb.AppendFormat(@"
private string field{0} = """";
[Category(""{1}"")]
[DefaultValue("""")]
public string Prop{0}
{{
    get {{ return field{0}; }}
    set {{ field{0} = value; }}
}}
",
                 n, n < 3 ? "Category1" : "Category2");
            }
            
            return string.Format(@"
using System.ComponentModel;
public class MyType
{{
{0}
}}",
             sb);
        }
        
        private Assembly CompileSourceCode(string text)
        {
            CompilerParameters parameters = new CompilerParameters();
            parameters.ReferencedAssemblies.Add("System.dll");
            parameters.GenerateInMemory = true;
            
            CSharpCodeProvider provider = new CSharpCodeProvider();
            CompilerResults results = provider.CompileAssemblyFromSource(parameters, text);

            return results.CompiledAssembly;
        }
        
        public Form1()
        {
            InitializeComponent();

            Assembly assembly = CompileSourceCode(GenerateClassCode());
            Type type = assembly.GetType("MyType");
            object obj = type.GetConstructor(Type.EmptyTypes).Invoke(null);
            this.propertyGrid1.SelectedObject = obj;
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.