Tag: 基类

如何从基类调用派生类方法?

我已经阅读了几个类似的问题,但似乎没有解决我面临的问题。 典型的答案是作为派生类进行转换,但我不能,因为我不知道派生类类型。 这是我的例子: class WireLessDevice { // base class void websocket.parsemessage(); // inserts data into the wireless device object } class WiFi : WireLessDevice { // derived class GPSLoc Loc; } 还可以导出无线设备以制作蓝牙,Wi-Max,蜂窝等设备,因此我不知道哪种类型的无线设备将接收数据。 当在基类中的websocket上接收到GPS数据包时,我需要更新派生设备的位置。 我想或许可以通过队列发送消息或创建事件处理程序并在事件参数中发送位置,但是当数据停留在类中时,这些看起来有点笨拙。 是否有内置于该语言中的内容可以让我在不知道类型的情况下从基类调用我的派生设备?

基类方法可以返回派生类的类型吗?

基于我读过的其他post,似乎这可能是不可能的,但我想我会发布我想要做的事情,看看是否有人知道解决方案。 我正在尝试向Telerik Open Access域模型生成的类添加“Clone()”方法。 没问题。 我能够弄清楚如何将基类添加到生成的实体模型中,以便我可以通过它们的基类来识别这些类。 ( 所有实体都从基类inheritance ) 我希望所有这些实体模型类能够克隆自己。 我也找到了解决方案。 ( 深度克隆对象 ) 现在我有一个基类,我想在每个从该基类派生的类中添加一个Clone()函数。 所以…看起来基类是放置它的自然场所……对吗? public abstract class DBEntityBase { /// /// Gets a COPY of the instance in it’s current state /// /// /// protected T Clone() { return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(this)); } } 我添加了受保护的genericsClone()方法,因为在基类级别我们不知道我们正在克隆的类型。 Clone()方法需要由实体模型本身实现,以便提供克隆的特定类型。 public partial class DeliverableEntity { public new DeliverableEntity Clone() […]

C#受保护的成员通过基类变量访问

这似乎是一个相当新手的问题,但你能解释为什么方法Der.B()无法通过Base类变量访问受保护的Foo吗? 这对我来说很奇怪: public class Base { protected int Foo; } public class Der : Base { private void B(Base b) { Foo = b.Foo; } // Error: Cannot access protected member private void D(Der d) { Foo = d.Foo; } // OK } 谢谢!

.NET:无法将对象强制转换为它实现的接口

我有一个类(TabControlH60),它inheritance自基类(UserControl)并实现一个接口(IFrameworkClient)。 我使用.NET Activator类实例化对象。 使用返回的实例,我可以转换为UserControl基类,但不能转换为接口。 我得到的例外是在代码snipet下面。 如何投射界面? object obj = Activator.CreateInstance(objType); Type[] interfaces = obj.GetType().GetInterfaces(); // contains IFrameworkClient m_Client = (UserControl)obj; // base class cast works IFrameworkClient fc = (IFrameworkClient)obj; // interface cast fails // Note: The (IFrameworkClient)obj cast works fine in the debugger Watch window. {“Unable to cast object of type ‘FPG.H60.AFF.TabControlH60’ to type ‘FPG.AFF.Interfaces.IFrameworkClient’.”}