我收到此错误:
System.Reflection.TargetException:Object与目标类型不匹配。
尝试绑定List<IEvent>
时,IEvent可以是约会,生日或其他一些与日历相关的事件类型。
答案 0 :(得分:2)
ChanChan, GridView 不支持绑定到接口集合, 尝试重新分配您的应用程序以确保仅绑定到一组concreate类。 唯一的解决方法是使用基类(在您的情况下为Event)并绑定到事件集合。
public class Event
{
public DateTime StartDate { get; set; }
}
public class Birthday : Event
{
public DateTime? EndDate { get; set; }
}
public class Appointment : Event
{
public string Place { get; set; }
}
public class EventCollection : Collection<Event>
{
public static EventCollection GetEvents()
{
var events = new EventCollection();
events.Add(new Birthday
{
EndDate = DateTime.Now.AddDays(1),
StartDate = DateTime.Now
});
events.Add(new Appointment
{
Place = "Gallery",
StartDate = DateTime.Now
});
return events;
}
}
请注意,从基类继承会创建'是'关系,但继承 来自接口创建'可以做'关系。换句话说,IMO,实施IEvent 这将是一个糟糕的设计,因为生日'是一个'事件。我会从这里继承基类。
希望这有帮助, 阀。
答案 1 :(得分:1)
这样做有点痛苦,但是可以将多个类型的列表绑定到GridView - 您只需要为基类型实现TypeDescriptionProvider
。 / p>
本文中的更多详细信息:Polymorphic Databinding Solutions
答案 2 :(得分:-1)
如果您需要此功能,则无法使用gridview,这是我可以绕过它的唯一方法。