Asp.net 重写对象上用于数据绑定的ToString

Asp.net 重写对象上用于数据绑定的ToString,asp.net,data-binding,Asp.net,Data Binding,我在ASP.NET2.0中使用数据绑定,遇到了Eval命令的问题 我有一个正在数据绑定的类,它看起来像这样: public class Address { public string Street; public string City; public string Country; public new string ToString() { return String.Format("{0}, {1}, {2}", Street, City, Cou

我在ASP.NET2.0中使用数据绑定,遇到了Eval命令的问题

我有一个正在数据绑定的类,它看起来像这样:

public class Address
{
   public string Street;
   public string City;
   public string Country;
   public new string ToString()
   {
      return String.Format("{0}, {1}, {2}", Street, City, Country);
   }
}
和另一个类(我正在数据绑定到的类):

现在,当我有一个数据绑定控件时,例如

<asp:DetailsView ID="dvSituation" DataSourceID="dataSourceThatPullsSituations" AutoGenerateRows="false"runat="server">
<EmptyDataTemplate>
    No situation selected
</EmptyDataTemplate>
<Fields>
   <asp:BoundField HeaderText="Other data" DataField="OtherInformation" />
   <asp:TemplateField>
       <HeaderTemplate>
           Address
       </HeaderTemplate>
       <ItemTemplate>
            <%-- This will work --%>
            <%# ((Situation)Container.DataItem).ObjAddress.ToString() %>
            <%-- This won't --%>
            <%# Eval("ObjAddress") %>
       </ItemTemplate>
   </asp:TemplateField>
</Fields>
</asp:DetailsView>

未选择任何情况
住址
而不是使用:

public new string ToString()
使用覆盖关键字:

public override string ToString()
而不是使用:

public new string ToString()
使用覆盖关键字:

public override string ToString()

使用关键字而不是ToString方法。

使用关键字而不是ToString方法。

因此,我的印象是,即使在调用对象时,新关键字也会覆盖实现,就像调用超类一样:

e、 g

需要我使用新的关键字。这个关键字实际做的是有效地创建一个与基类中定义的方法同名的方法

所以,如果我在上面的例子中使用new关键字,我将得到object的ToString方法。换句话说,根据我所处理的类型(基类或子类),ToString方法将调用不同的方法


显然,在这种情况下,我应该使用RTFM…

,因此我的印象是,即使在调用对象时,新关键字也会覆盖实现,就像调用超类一样:

e、 g

需要我使用新的关键字。这个关键字实际做的是有效地创建一个与基类中定义的方法同名的方法

所以,如果我在上面的例子中使用new关键字,我将得到object的ToString方法。换句话说,根据我所处理的类型(基类或子类),ToString方法将调用不同的方法

很明显,在这种情况下,我应该有RTFM