向上转换子实体到父实体不工作c#

向上转换子实体到父实体不工作c#,c#,wpf,fluent-nhibernate,C#,Wpf,Fluent Nhibernate,我不能把孩子向上投射到父母身上。 我有两门课: public class PasswordEntity{ protected string _password; public virtual string Password { get => _password; set => _password = value; } 以及: 在ViewModel中,我尝试将Password

我不能把孩子向上投射到父母身上。 我有两门课:

public class PasswordEntity{
       protected string _password;

       public virtual string Password
        {
            get => _password;
            set => _password = value;
        }
以及:

在ViewModel中,我尝试将PasswordEntityWrapper向上转换为PasswordEntity,如下所示:

public class PasswordInfoViewModel {

        private PasswordEntityWrapper _selectedItem;

        public PasswordEntityWrapper SelectedItem
        {
            get => _selectedItem;
            set => SetProperty(ref _selectedItem, value);
        }
        public void DeleteEntity()
        {
            PasswordEntity item = (PasswordEntity)SelectedItem as PasswordEntity;
            _statefulRepository.Delete(item);
        }
但是_statefulRepository.Delete()方法传递PasswordEntityWrapper类型的项


我不知道我做错了什么。

IMHO,您混淆了对基类型的强制转换和创建基类型的新实例。您将PasswordEntityWrapper强制转换为PasswordEntity。PasswordEntity类型的变量将包含对对象的引用。但是对象,就像它是PasswordEntityWrapper类型一样,仍然存在。顺便说一句,这不需要“as”操作符-这样的转换是自动完成的。您可以立即执行
\u statefulRepository.Delete(SelectedItem)也许你需要一些稍微不同的东西。但从你的解释来看还不清楚。更详细地描述您需要实现什么。但不是您试图如何实现它。@EldHasp我有一个Fluent Nhibernate的实体:PasswordEntity。它只包含公共虚拟属性。我为这个实体制作了一个包装器,它包含额外的功能。因此,在代码中,我使用PasswordEntityWrapper,但是当保存/删除到数据库时,我想根据您的解释向上转换到PasswordEntityWrapper,不需要进行任何转换。要使方法工作,您需要PasswordEntity类型的实体。将从PasswordEntity派生的实体传递到方法不应中断它们的工作。是。这正是我所期望的,但由于某种原因,它不能以那种方式工作。我需要的正是PasswordEntity类型。但我无法将PasswordEntityWrapper类型转换为PasswordEntity类型。-你可以在截图上看到。我不明白为什么它不能那样工作。
public class PasswordInfoViewModel {

        private PasswordEntityWrapper _selectedItem;

        public PasswordEntityWrapper SelectedItem
        {
            get => _selectedItem;
            set => SetProperty(ref _selectedItem, value);
        }
        public void DeleteEntity()
        {
            PasswordEntity item = (PasswordEntity)SelectedItem as PasswordEntity;
            _statefulRepository.Delete(item);
        }