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)
你有
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)