首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertyChanged _ CallerMemberName _ AmbiguousMatchExcpetion

PropertyChanged _ CallerMemberName _ AmbiguousMatchExcpetion
EN

Stack Overflow用户
提问于 2017-05-17 06:42:14
回答 1查看 902关注 0票数 0

我在运行时得到了以下错误:AmbiguousMatchExcpetion“发现了模糊匹配”。

有人知道原因是什么吗?

班级

代码语言:javascript
复制
public class MyTrimmedClass : Control, INotifyPropertyChanged
{
    public HtUserGroupSetup CurrentUserGroupSetup
    {
        get { return _CurrentUserGroupSetup; }
        set
        {
            if (_CurrentUserGroupSetup != value)
            {
                _CurrentUserGroupSetup = value;
                OnPropertyChanged();
            }
        }
    }
    private HtUserGroupSetup _CurrentUserGroupSetup;


    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}


public class HtUserGroupSetup : HtUserGroup
{
    public new List<HtPermissionSetup> Permissions
    {
        get { return _Permissions; }
        set
        {
            if (_Permissions != value)
            {
                _Permissions = value;
                OnPropertyChanged("Permissions");
            }
        }
    }
    private List<HtPermissionSetup> _Permissions = new List<HtPermissionSetup>();

    public HtUserGroupSetup(HtUserGroup userGroup)
    {
        Name = userGroup.Name;
        Description = userGroup.Description;
    }
}

public class HtUserGroup : HtBaseServiceData
{
    private string _Name = "";
    [DataMember]
    public string Name
    {
        get { return _Name; }
        set
        {
            if (_Name != value)
            {
                _Name = value;
                OnPropertyChanged("Name");
            }
        }
    }

    private string _Description = "";
    [DataMember]
    public string Description
    {
        get { return _Description; }
        set
        {
            if (_Description != value)
            {
                _Description = value;
                OnPropertyChanged("Description");
            }
        }
    }

    private List<HtPermission> _Permissions = new List<HtPermission>();
    [DataMember]
    public List<HtPermission> Permissions
    {
        get { return _Permissions; }
        set
        {
            if (_Permissions != value)
            {
                _Permissions = value;
                OnPropertyChanged("Permissions");
            }
        }
    }
}

public abstract class HtBaseServiceData : INotifyPropertyChanged
{
    protected void OnPropertyChanged(string property)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
    }
    public event PropertyChangedEventHandler PropertyChanged;
}

屏幕截图

StackTrace

System.Reflection.AmbiguousMatchException ist aufgetreten. HResult=-2147475171 Message=Mehrdeutige bereinstimmung gefunden. Source=mscorlib StackTrace: bei System.RuntimeType.GetPropertyImpl(String name,BindingFlags bindingAttr,Binder binder,Type returnType,Type[] Type,ParameterModifier[]修饰符) InnerException:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-17 08:47:50

问题是,Permissions属性在HtUserGroupSetup中是隐藏 baseClass的Permissions属性(HtUserGroup)。

代码语言:javascript
复制
public new List<HtPermissionSetup> Permissions

Permissions中重命名HtUserGroupSetup属性解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44017399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档