DataGrid Bound Field抛出TargetInvocationExeption

时间:2012-11-29 15:42:04

标签: c# asp.net gridview properties

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

任何?

0 个答案:

没有答案