C# 名称';设置';在当前上下文中不存在。在我的模型课上

C# 名称';设置';在当前上下文中不存在。在我的模型课上,c#,uwp,template10,C#,Uwp,Template10,我得到一个错误,名称“Set”在我的模型类的当前上下文中不存在 我从T10_属性片段生成属性 下面是源代码 using PropertyChanged; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.T

我得到一个错误,名称“Set”在我的模型类的当前上下文中不存在

我从T10_属性片段生成属性

下面是源代码

using PropertyChanged;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Template10.Mvvm;
using Template10.Services.NavigationService;
using Template10.Utils;
using Windows.UI;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace Models
{
    [ImplementPropertyChanged]
    public class WiFiAccessPoint
    {
        string _SSID = default(string);
        public string SSID { get { return _SSID; } set { Set(ref _SSID, value); } }

    }
}

之所以出现这种情况,是因为在这种情况下,没有使用继承的基类,
ViewModelBase
用于viewmodel,或者
BindableBase
用于模型,或者
validablemodelbase
用于带有
Template10.validation
库的需要验证的模型。你用的是福迪?(顺便说一句,使用自动属性)

[ImplementPropertyChanged]
public class SomeViewModel{
   public bool SomeBoolProperty {get;set;} // no backers required..
}
)或者一些可注入的propertychange属性系统,它不知道
Set()
。也许是时候阅读基于属性的喷油器的手册了

因此,如果执行此操作,您将无法访问
Set()

[ImplementPropertyChanged]
public class WiFiAccessPoint: ViewModelBase
{
    string _SSID = default(string);
    public string SSID { get { return _SSID; } set { Set(ref _SSID, value); } }

}

这会奏效的。但是您正在编写IL,所以您最好进行测试。

问题应该是独立的。添加相关代码(如果有那么多行,则不是全部100多行)。
Set(ref…,…)
方法来自T10框架中的BindableBase类。很明显,您在属性setter中调用了名为
Set
的方法,但该方法未在类中定义。您是否忘记从实现此方法的类继承?或者您只是忘记实现这个方法了吗?您应该让您的模型类执行INPC还是应该找到另一种方法,这是有争议的。有很多选择,看一看。@LasseV.Karlsen我没有忘记从类继承。我只是不知道我应该这么做。我最初认为我错过了一个使用参考。谢谢。Bindablebase解决了这个问题。我不明白福迪的问题是什么。这里推荐的做事方式是什么?我应该放弃Fody.PropertyChanged并使用T10 BindableBase吗?反之亦然?使用它是个人的选择,没有错,但在使用前要理解。Set来自作为BindableBase一部分的T10_属性。福迪不会接受的。其次,福迪,如果你看引擎盖下注射到模型的INPC为你。。。