OriginalGriff
Попробовать это:
public class MyBaseClass
{
public int I;
public string S;
}
public class MyClass : MyBaseClass
{
...
}
private void MyButton_Click(object sender, EventArgs ew)
{
string myClassName = "GeneralTesting.frmMain+MyClass";
Type t = Type.GetType(myClassName);
MyBaseClass mbc = (MyBaseClass)Activator.CreateInstance(t);
mbc.S = "hello";
Priya-Kiko
Спасибо Вам за ответ.
Класс, который я пытаюсь создать, - это класс таблиц (или класс сущностей) , созданный Entity Framework. Какой класс я должен использовать в качестве базового класса здесь ??
OriginalGriff
Вот в чем проблема с динамическим созданием типов и попыткой использовать их из статического кода: если вы не можете предоставить класс для их приведения, вы не можете получить доступ к свойствам, методам, полям, событиям ... непосредственно в коде, потому что вы не можете его скомпилировать, вам нужно использовать отражение для доступа к ним (что является медленным, грязным и трудным для чтения).
Помните, чтобы получить доступ к свойству класса непосредственно в коде, вам нужен экземпляр этого класса в соответствующей типизированной переменной. В моем примере, если бы MyClass имел свойство "Foo", вы все равно не могли бы получить доступ к нему через переменную mbc, потому что не все типы, которые могут быть в переменной, будут иметь свойство "Foo", вместо этого они могут иметь "Bar".
Не имеет значения, является ли это EF или vanilla C#, если вы не знаете, какой это тип во время компиляции (или используете динамические переменные), вы не можете получить доступ к свойствам или методам, кроме как путем отражения. (А dynamic только обходит проверку времени компиляции, она все равно завершится неудачей, если экземпляр не имеет этого свойства во время выполнения.)