C#在不同类型的对象之间进行转换

N3w*_*bie 0 .net c# types casting

首先,我是C#的新手.我得到
错误是:

附加信息:无法将类型为"UserGUI.MyItems"的对象强制转换为"CommonBookLib.AbstractItem".

他们是两个不同的类:

public class MyItems
{
    public string ItemName { get; set; }
    public int CopyNumber { get; set; }
    public int Guid { get; set; }
    public DateTime? TimePrinted { get; set; }
    public string Category { get; set; }
    public string SubCategory { get; set; }
    public bool? BestSeller { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

public class AbstractItem : IPropsDetails
{
    public int CopyNumber { get; }
    public string ItemName { get; }
    public DateTime Time { get; }
    public int Guid { get; }

    public AbstractItem(int copyNumber, string itemName, DateTime time, int guid)
    {
        this.CopyNumber = copyNumber;
        this.ItemName = itemName;
        this.Time = time;
        this.Guid = guid;
    }
}
Run Code Online (Sandbox Code Playgroud)

它发生在我做的时候:

AbstractItem myItemsList = (AbstractItem)LibraryList.SelectedItem;
logicManager.Remove(myItemsList);
Run Code Online (Sandbox Code Playgroud)

好吧,正如你所看到的,我有MyItems哪些负责我的GUI中的DataBindingsAbstractItem,负责实现对我的数据保存位置的添加操作.

由于我没有很好地管理我的代码,我遇到了这种情况,我真的不想改变MyItems(删除和重新编码AbstractItem).我怎么能转换这两个?

顺便说一句,我知道AbstractItem只有4个属性,而MyItems有更多.

但是,我有孩子具有完全相同的属性AbstractItem.

任何帮助,将不胜感激.提前致谢!

Gra*_*ICA 5

MyItems类中删除也存在的字段AbstractItem,然后MyItems从中派生出来.

您必须添加一个构造函数MyItems,将所需的值传递给基础构造函数,或者向基类添加一个空构造函数.

public class MyItems : AbstractItem
{
    public MyItems(int copyNumber, string itemName, DateTime time, int guid)
        :base(copyNumber, itemName, time, guid)
    {
    }

    public DateTime? TimePrinted { get; set; }
    public string Category { get; set; }
    public string SubCategory { get; set; }
    public bool? BestSeller { get; set; }
}
Run Code Online (Sandbox Code Playgroud)