这是我的网格视图代码隐藏。
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";
}
}
}
这工作正常。但是当我的列表包含以下类的对象时,我得到一个例外。
class NeuerKunde : LogEntry
{
public override String getMessage
{
get { return "Test2"; }
}
}
例外:“Der Eigenschaftenaccessor getMessage für das Model.LogEntry-Objekt hat folgende Ausnahme verursacht: Das Objekt stimmt mit dem Zieltyp nicht überein”
翻译:“Model.LogEntry-Object 的 Property-Accessor getMessage 导致异常:对象与目标类型不匹配。”
innerExeption 是一个 TargetExeption 并表示相同。
尝试在没有反射的情况下访问属性可以正常工作。
我认为它与试图调用 getMessage-Property 的 gridView 有关,但我不知道如何修复它......
任何人?