1

这是我的网格视图代码隐藏。

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 有关,但我不知道如何修复它......

任何人?

4

0 回答 0