我写这样的代码:我可以延长一个基类,投基的延伸
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Net.Mail;
using System.Net;
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Foo m_oFoo = new Foo() {
S1 = "N"
};
List<Foo> m_List = new List<Foo>();
m_List.Add(m_oFoo);
IFoo m_oIFoo = (IFoo)m_List[0];
m_oIFoo.S2 = "C";
Response.Write(m_oIFoo.S1);
Response.Write(m_oIFoo.S2);
}
}
public class Foo
{
public string S1 { get; set; }
public Foo()
{
}
}
public class IFoo: Foo
{
public string S2 { get; set; }
public IFoo(){}
}
但是编译器说的。“无法投类型的对象‘富’的类型‘的IFoo’” 如何将Foo投射到Foo1而不用所有Foo方法声明一个施法者,因为这是一个例子,Foo有超过100个方法。
感谢您的帮助
调用一个带'I'前缀的类似乎不是一个好主意。 – BoltClock 2013-03-11 17:01:41
具有“I”的前缀是接口的标准约定。请不要将它用于某个类型的子类,这完全违反了人们的期望。 – Servy 2013-03-11 17:01:46
您不能将基类的实例转换为其子类之一,因为根据定义,它不会实现该子类。请详细解释您的实际业务问题,以便开发技术上合适的解决方案。 – 2013-03-11 17:04:07