这可能是一个有点愚蠢的问题,但我找不到任何解决方法或想到以下问题的任何解决方案......
public class Example: IExample, INotifyPropertyChanged
{
public Example()
{
}
/// Does not works properly...
string fooString;
string IExample.A
{
get { return this.fooString; }
set
{
this.fooString= value;
onPropertyChange("A");
}
}
/// Works just fine
string fooString;
public string A
{
get { return this.fooString; }
set
{
this.fooString= value;
onPropertyChange("A");
}
}
PropertyChangedEventHandler propertyChangedHandler;
private void onPropertyChange(string propertyName)
{
if (this.propertyChangedHandler != null)
propertyChangedHandler(this, new PropertyChangedEventArgs(propertyName));
}
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add { this.propertyChangedHandler += value; }
remove { this.propertyChangedHandler -= value; }
}
}
正如您从代码中看到的那样,我有一个从 INotifyPropertyChanged 实现的类 Example 和具有 1 个属性 A 的 IExample 接口。
由于我使用的是显式接口实现,我不得不通过我的IExample 接口引用我的 A
这就是我的问题所在。由于A在值更改时显式来自IExamle ,因此不会触发INotifyPropertyChanged ...
这是有道理的。
任何想法/想法如何保持显式接口实现和 INotifyPropertyChanged 并仍然完成工作?
你可能会问我为什么痴迷于显式接口实现
1) it's cool [I know horrible reason]
2) its clarity and better code readability [mostly because of this]
3) It forces you to use Interface
顺便说一句,请随意批评 INotifyPropertyChanged 实现。我觉得我可以重新实现这是一种可以处理显式继承的方法
谢谢大家。
[编辑] 更改了“显式继承与显式接口实现” - 就像 Daniel 纠正了我一样,添加了隐式继承代码。显然其中一个继承应该被注释掉......