Caliburn.Micro和虚拟方法

时间:2015-04-29 13:55:47

标签: c# nhibernate mvvm caliburn.micro

我正在更新其他人编写的项目。该项目使用c#,WPF编写,并在Caliburn.Micro的帮助下实现MVVM模式。数据访问层使用ORM NHibernate编写,数据库本身是SQL DB。

我注意到该项目正在使用每次获取的急切加载,我想将其更改为延迟加载。但我偶然发现了一个问题,我现在试图修复一个多星期,因此我的问题在于stackoverflow。

一些信息:

poco类的较短版本:

using Caliburn.Micro;
namespace KassaOPM.Domain
{
public class Klant : PropertyChangedBase
{
    private int _id;
    private string _naam;

    public virtual int Id
    {
        get { return _id; }
        set
        {
            _id = value;
            NotifyOfPropertyChange(() => Id);
        }
    }

    public virtual string Naam
    {
        get { return _naam; }
        set
        {
            _naam = value;
            NotifyOfPropertyChange(() => Naam);
        }
    }
}

PropertyChangedBase 来自Caliburn.Micro.PropertyChangedBase。 当NHibernate想要使用延迟加载时,它要求每个属性和方法都是虚拟,但是我不能将 NotifyOfPropertyChange 方法设置为虚拟,因为它来自Caliburn。微

如果我尝试运行该应用程序,我会收到以下消息:

The following types may not be used as proxies:
KassaOPM.Domain.Klant: method add_PropertyChanged should be 'public/protected virtual' or 'protected internal virtual'
KassaOPM.Domain.Klant: method remove_PropertyChanged should be 'public/protected virtual' or 'protected internal virtual'
KassaOPM.Domain.Klant: method NotifyOfPropertyChange should be 'public/protected virtual' or 'protected internal virtual'
KassaOPM.Domain.Klant: method get_IsNotifying should be 'public/protected virtual' or 'protected internal virtual'
KassaOPM.Domain.Klant: method set_IsNotifying should be 'public/protected virtual' or 'protected internal virtual'

我不知道如何解决这个问题。我希望stackoverflow上的某个人有一个解决方案或不同的方法。

如果您需要更多信息,请告诉我,我会尽力为您提供所需的一切。

提前致谢

0 个答案:

没有答案