C# 名称';设置';在当前上下文中不存在。在我的模型课上
我得到一个错误,名称“Set”在我的模型类的当前上下文中不存在 我从T10_属性片段生成属性 下面是源代码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
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为你。。。