Tag: abstract class

抽象类,构造函数和公司

好吧,我正在尝试重用一部分C#代码。 它是一个带有UDP服务器的抽象类,可以在这里看到: http://clutch-inc.com/blog/?p=4 我已经创建了一个这样的派生类: public class TheServer : UDPServer { protected override void PacketReceived(UDPPacketBuffer buffer) { } protected override void PacketSent(UDPPacketBuffer buffer, int bytesSent) { } } 在我的应用程序中,我创建了一个派生类的实例,如下所示: TheServer serv = new TheServer(20501); serv.Start(); 但我有错误,我不明白为什么。 请帮忙。 ‘TheProject.TheServer’不包含带’1’参数的构造函数 ‘TheProject.UDPServer.Start()’由于其保护级别而无法访问 ‘TheProject.UDPServer’不包含带’0’参数的构造函数

C#中的抽象类vs静态类

可能重复: 抽象类和静态类之间有什么区别? 你好 我想知道C#中抽象类和静态类之间的区别是什么 我什么时候使用什么?为什么? 是抽象类是一个我们无法创建它的实例的类吗? 谢谢

Web服务 – 派生类中的XmlInclude而不是基类?

我使用抽象类作为Web服务调用中的参数。 目前,我在基类中包含了一个派生类的XmlInclude,如下所示: [XmlInclude(typeof(DerivedClass))] public abstract class BaseClass { } 但是,我宁愿不在基类中包含所有派生类型。 在http://www.pluralsight.com/community/blogs/craig/archive/2004/07/08/1580.aspx中 ,作者提到了另一种选择 – 将属性写在Web方法之上,如下所示: [WebMethod] [System.Xml.Serialization.XmlInclude(typeof(DerivedClass))] public BaseClass getClass() { return new DerivedClass(); } 但是,我也不想将派生类型放在Web服务中。 有没有办法将属性保留在派生类型中?

面向对象设计:何时制作抽象类

现在,我正在学习OOP,主要是在c#中。 我感兴趣的是创建一个无法实例化的类的主要原因是什么。 什么时候制作抽象类的正确例子是什么? 我发现自己在inheritance方式中使用抽象类太热情了。 当类在系统中是抽象的并且类不应该是抽象的时候是否有一些规则? 例如,我以某种方式制作了相似的医生和患者类,所以我从抽象类Person中派生出它们(因为它们都有名字和姓氏)。 那是错的吗? 对不起,如果问题很愚蠢,我对此非常陌生。

inheritance一个没有任何构造函数的抽象类

我想从另一个类inheritance一个类,标记为抽象,没有定义任何构造函数。 这是我的代码: // In one assembly (TheMessage.dll), as seen via F12 in VS (from Metadata) namespace Namespace1 { public abstract class Message { public string Body { get; set; } // some abstract methods here, not shown. } } // In another assembly (TheUser.dll) namespace Namespace2 { public class MyMessage : Namespace1.Message { public MyMessage() […]

为什么需要抽象类?

可能重复: 什么是抽象类? 1.创建无法实例化的类有什么意义? 最常用作基类或接口(某些语言有单独的接口结构,有些没有) – 它不知道实现(由子类/实现类提供) 为什么有人想要这样的课? For abstraction and re-use 3.抽象类变为必要的情况是什么?任何人都可以通过一个例子来简要介绍它吗?

从基类创建派生类的实例

我有我的抽象基类A : public abstract class A : ICloneable { public int Min { get; protected set; } public int Max { get; protected set; } public A(int low, int high) { this.Min = low; this.Max = high; } //… public object Clone() { return new this(this.Min, this.Max); //<– ?? } } 我的B级扩展了哪个: public class B […]

抽象方法使用vs常规方法

我想知道两个约定之间的区别: 使用抽象方法创建抽象基类,该抽象方法稍后将在派生类上实现。 在没有抽象方法的情况下创建抽象基类 但是稍后在派生类的级别上添加相关方法。 有什么不同?

将set访问器添加到类中的属性,该类派生自仅具有get访问器的抽象类

我有一个抽象类, AbsClass实现了一个接口, IClass 。 IClass有几个属性,只有Get访问者。 AbsClass将IClass的属性实现为要在从AbsClass派生的类中定义的抽象属性。 因此,从AbsClass派生的所有类也需要通过与Get访问器具有相同的属性来满足IClass 。 但是,在某些情况下,我希望能够从IClass向属性添加set访问器 。 然而,如果我尝试使用set访问器覆盖AbsClass中的抽象属性,我会收到此错误 ConcClassA.Bottom.Set无法覆盖,因为AbsClass.Bottom没有可覆盖的set访问器 请参阅下面的ConcClassA 。 如果我有一个只实现IClass接口但没有inheritance自AbsClass的类,那么我可以添加一个没有问题的set访问器。 请参阅下面的ConcClassB 。 我可以在AbsClass的每个派生中实现IClass,而不是直接为AbsClass实现。 但我从我的设计中知道每个AbsClass也需要一个IClass,所以我宁愿在层次结构中指定更高的值。 public interface IClass { double Top { get; } double Bottom { get; } } abstract class AbsClass:IClass { public abstract double Top { get; } public abstract double Bottom { get; } } class ConcClassA […]

非抽象C#类中的无体构造函数

我正在尝试理解MVC框架中提供的以下类; 看起来这个类应该是抽象的,但它不是,但是这个类编译。 尽管缺少“抽象”关键字,该类实际上是抽象的吗? 我在这里想念的是什么? namespace Microsoft.AspNet.Identity.EntityFramework { public class IdentityUser : IUser { public IdentityUser(); public IdentityUser(string userName); public virtual ICollection Claims { get; } public virtual string Id { get; set; } public virtual ICollection Logins { get; } public virtual string PasswordHash { get; set; } public virtual ICollection Roles { get; } […]