Я создал динамический класс, используя базу данных с именем mMember и содержащий некоторые проэктивы. Я хочу использовать это свойство для назначения данных в datagrid в wpf.создать список динамически создаваемых классов в C#
private void Button_Click(object sender, RoutedEventArgs e)
{
ICodeCompiler loCompiler = new CSharpCodeProvider().CreateCompiler();
CompilerParameters loParameters = new CompilerParameters();
// Start by adding any referenced assemblies
loParameters.ReferencedAssemblies.Add("System.dll");
// Must create a fully functional assembly as a string
lcCode = @"public class mMember
{
public static int cid { get; set; }
public static string cFname { get; set; }
public static string cLname { get; set; }
public static decimal? iAge { get; set; }
public static string dpDept_Id { get; set; }
public static bool? bEnabled { get; set; }
}";
// Load the resulting assembly into memory
loParameters.GenerateInMemory = false;
// Now compile the whole thing
CompilerResults loCompiled =
loCompiler.CompileAssemblyFromSource(loParameters, lcCode);
if (loCompiled.Errors.HasErrors)
{
string lcErrorMsg = "";
lcErrorMsg = loCompiled.Errors.Count.ToString() +
" Errors:";
for (int x = 0; x < loCompiled.Errors.Count; x++)
lcErrorMsg = lcErrorMsg + "\r\nLine: " +
loCompiled.Errors[x].Line.ToString() +
" - " + loCompiled.Errors[x].ErrorText;
MessageBox.Show(lcErrorMsg + "\r\n\r\n" + lcCode,
"Compiler Demo");
return;
}
Assembly loAssembly = loCompiled.CompiledAssembly;
Type calcType = loAssembly.GetType("mMember");
// Retrieve an obj ref - generic type only
object loObject =
loAssembly.CreateInstance("mMember");
PropertyInfo numberPropertyInfo = calcType.GetProperty("cLname");
numberPropertyInfo.SetValue(loObject, "Kadam", null);
string value = (string)numberPropertyInfo.GetValue(loObject, null);
var loResult1 = loObject.GetType().GetProperty("cLname").GetValue(this, null);
MessageBox.Show(loResult1.ToString());
if (loObject == null)
{
MessageBox.Show("Couldn't load class.");
return;
}
}
Теперь я хочу, чтобы создать список свойств данных, указанных в выше динамически созданного классаmMember и связать этот список DataGrid в МОФ. Я хочу создать Список в указанном формате, например Заказ - это мое имя класса, которое также содержит свойства, такие как mMember класс, но класс в формате Ready. Наконец, я связываю заказы на datagrid.
List<Order> orders = new List<Order>();
for (int i = 0; i < dt.Rows.Count; i++)
{
orders.Add(new Order() { MB_ID =Convert .ToInt64 (dt.Rows[i]["MB_ID"]), Name = dt.Rows[i]["MEMBER_NAME"].ToString(), ItemCount = dt.Rows[i]["MB_ID"].ToString(), CompanyId = dt.Rows[i]["COMPANY_ID"].ToString() });
}
// Set the data context
this.DataContext = orders;
теперь я хочу создать подобный список для mMember класса. поэтому я создал экземпляр для таких же, но оно не работает
IList list1 = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(new Type[] { loObject.GetType() }));
как добавить листу данных в это и привязать к сетке
Почему ... почему вы пытаетесь это сделать в первую очередь? Что бы вы ни пытались сделать, я уверен, что есть более простой способ. –
не могли бы вы объяснить это. Но для динамически созданного класса и их свойств. Заранее спасибо. –
Зачем вам нужен динамический класс? –