Здравствуйте, 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;
}