gpt4 book ai didi

c# - C#:AmbiguousMatchException:发现模糊匹配

转载 作者:行者123 更新时间:2023-12-03 10:26:28 29 4
gpt4 key购买 nike

我得到异常(exception):

AmbiguousMatchException: ambiguous match found



当打开我的窗口时,XAML被解析。我有一个基本的ViewModel类。它具有DataGrid的SelectedItem属性的属性
public class BaseViewModel<T> : ViewModel, INotifyPropertyChanged where T : MyClass
{
protected T _selectedItem;
public T SelectedItem
{
get
{
return _selectedItem;
}
set
{
_selectedItem = value;
OnPropertyChanged();
}
}
}

在继承的ViewModel中,我重写了会产生异常的属性
public new MyInheritedClass SelectedItem
{
get
{
return _selectedItem;
}
set
{
_selectedItem = value;
OnPropertyChanged();
//Do other stuff
}
}

那么如何使用重写的属性而不获取异常呢?

最佳答案

为什么要在派生类中重新定义属性?派生类的type参数应指定属性的类型:

public class MyInheritedClass : BaseViewModel<MyClass>
{
//no need to define a new SelectedItem property...
}

在上面的示例代码中, MyInheritedClass已经具有 SelectedItem类型的 MyClass属性。它已经在基类中定义。您不需要创建一个新的。

如果属性需要在派生类中做一些特殊的事情,则应在基类中将属性定义为 virtual:
public virtual T SelectedItem
{
get
{
return _selectedItem;
}
set
{
_selectedItem = value;
OnPropertyChanged();
}
}

...并在派生类中覆盖它:
public override MyClass SelectedItem
{
get
{
return _selectedItem;
}
set
{
_selectedItem = value;
OnPropertyChanged();
//Do other stuff
}
}

关于c# - C#:AmbiguousMatchException:发现模糊匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42188340/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com