这是我对Gridview的Code-Behind。
gridViewLog.DataSource = LogManager.getEntriesByUser(UserManager.getCurrentUser());
gridViewLog.AutoGenerateColumns = false;
BoundField ev = new BoundField();
ev.DataField = "getMessage";
ev.HeaderText = "Ereignis";
gridViewLog.Columns.Add(ev);
BoundField name = new BoundField();
name.DataField = "User.Name";
name.HeaderText = "Name";
gridViewLog.Columns.Add(name);
gridViewLog.DataBind();
LogManager.getEntriesByUser(int id)返回LogEntry-Objects列表。 LogEntry-Class如下所示:
public class LogEntry
{
private User user;
public User User
{
get {
if(user == null)
user = UserManager.getUserById(userId);
return user;
}
}
public virtual String getMessage
{
get
{
return "test";
}
}
}
这很好用。但是当我的List包含以下类的对象时,我得到一个Exeption。
class NeuerKunde : LogEntry
{
public override String getMessage
{
get { return "Test2"; }
}
}
执行: “Der EigenschaftenaccessorgetMessagefürdasModel.LogEntry-Objekt hat folgende Ausnahme verursacht:Das Objekt stimmt mit dem Zieltypnichtüberein”
翻译:“Model.LogEntry-Object的Property-Accessor getMessage导致了一个例外:该对象与目标类型不匹配。”
innerExeption是一个TargetExeption并且说的相同。
尝试访问没有反射的属性可以正常工作。
我认为它与gridView试图调用getMessage-Property有关,但我不知道如何修复它......
任何?