在BindingListView中发现歧义匹配异常

H M*_*ail 6 c# data-binding reflection

使用Andrew Davey的BindingListView(http://blw.sourceforge.net/)时,我不断收到此异常。我正在使用ServiceStack OrmLite。我的对象看起来像这样:

public class Category
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    [StringLength(50)]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

public class Product
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    [References(typeof(Category))]
    public int CategoryId { get; set; }
    public int ProductTypeId { get; set; }
    [StringLength(50)]
    public string Name { get; set; }

    [Reference]
    public Category Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何传递此异常,现在到处搜索了两天。任何帮助,将不胜感激。谢谢!

编辑:

异常发生在以下代码的第一行:

var products = dbConn.Select<Product>().OrderBy(p => p.Name).ToList();
var productsView = new BindingListView<Product>(products);
dgProducts.DataSource = productsView;
Run Code Online (Sandbox Code Playgroud)

bh_*_*th0 0

你有

product.Name
product.Category.Name

product.Id  
product.Category.Id
Run Code Online (Sandbox Code Playgroud)

当该库进行反射以获取属性时,它会获取 2 个“名称”。

代码不知道,你想要哪一个。来自的产品名称或产品类别名称。


tldr:简单的修复方法是更改​​属性名称之一

public class Category
{
    public int cId { get; set; }
    public string cName { get; set; }
}


public class Product
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    [References(typeof(Category))]
    public int CategoryId { get; set; }
    public int ProductTypeId { get; set; }
    [StringLength(50)]
    public string Name { get; set; }

    [Reference]
    public Category Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)