是否可以使用主类的属性提取对象?

Ric*_*ard 3 c# inheritance entity-framework

我有一个A类并且是继承的B.假设类A具有以下属性:

  • propertyA1
  • propertyA2
  • propertyA3

就像是:

public class ObjectA
{
    public int propertyA1 { get; set; }
    public int propertyA2 { get; set; }
    public int propertyA3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以我们的B级将具有以下属性:

  • propertyA1 - 继承A.
  • propertyA2 - 继承A.
  • propertyA3 - 继承A.
  • propertyB1 - 自己B
  • propertyB2 - 自己B

就像是:

public class ObjectB : ObjectA
{
    public int propertyB1 { get; set; }
    public int propertyB2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我们创建了一个B类的新对象,并想象我们有一个包含20个相同类型对象的列表. 想象一下,A类的属性是200,而B类100也都对应于数据库中的表.

因此,想要保留我们的数据来自B类对象列表(使用EntityFramework),我们希望在表A中保存类A的信息.通常我们会执行以下操作:

foreach(var item in ObjectsB)
{
    ObjectA a = new ();
    a.propertyA1 = item.propertyA1;
    ...
    // And so on to put all the corresponding properties.
    db.TableA.add(a);
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

这就是我的问题所在:是否可以从B类对象创建A类对象?也就是说,省略了B类的所有属性.例如:

ObjectA a = b.GetPropertiesFromMasterClass();
Run Code Online (Sandbox Code Playgroud)

如果是这样,我们会避免分配200个可能性,如果可能,前进的方向是什么?

Mar*_*čič 5

也许这个:

var b = new ObjectB();
var a = b as ObjectA;
Run Code Online (Sandbox Code Playgroud)

更紧凑的版本:

ObjectA a = new ObjectB();
Run Code Online (Sandbox Code Playgroud)