【在继承基类时,有没有理由为什么C#默认为new而不是覆盖?】教程文章相关的互联网学习教程文章

c# – 如果要在从接口继承的不同类之间进行选择,如何不违反OCP?【代码】

我有一个接口让我说ISendOut,我从它继承了两个不同的类例如TransferViaSerialPort和TransferViaWirelessModule(我的意思是在这两个类中实现这个接口).如何设计我的软件,使用户能够选择(在UI中)通过SerialPort或WirelessModule发送他/她的数据的方法,而不是违反OCP?因为如果我想要一个“Switch Case”或“If / Else”语句,我会违反OCP.解决方法:您需要使用工厂模式.要使Factory Pattern动态化,您可以使用Reflection并在UI中显示类的...

c# – 多接口继承中的问题【代码】

我有一个相当大的应用程序,它有很多基类.我想将其更改为接口,以允许(更容易)单元测试. 但是,当我对可能使用的接口进行新的“设计”时,我注意到某些类将继承自5个或更多接口.这会引起问题吗? 我问这个,因为我不想重构整个应用程序,发现它不起作用;或者,如果有一个很好的解决方案,将其纳入重构步骤. 我想到的一些接口(伪代码).它不完整但它显示了我想要的界面关系(还会有更多).例如. IBank来自5个接口,我认为还需要更多接口.INaviga...

c# – 调用从封闭泛型继承的methodinfo【代码】

private static void Main(string[] args){var messageType = typeof (SampleHandler1);var genericType = typeof (IConsume<>).MakeGenericType(messageType);var genericArguments = genericType.GetGenericArguments();var consumeMethod = genericType.GetMethod("Consume");var constructorInfo = genericArguments[0].GetConstructor(Type.EmptyTypes);var classObject = constructorInfo.Invoke(new object[] {});var argsx...

c# – 子实体的继承和导航属性【代码】

我在使用继承时遇到了导航属性的问题(TPH – 目前在EF Core中唯一可用的). 我的层次模型:public class Proposal {[Key]public int ProposalId { get; set; }[Required, Column(TypeName = "text")]public string Substantiation { get; set; }[Required]public int CreatorId { get; set; }[ForeignKey("CreatorId")]public Employee Creator { get; set; }}public class ProposalLeave : Proposal {[Required]public DateTime L...

c# – oop:具体情况下的组合或继承【代码】

我们刚刚与大学进行过讨论,关于oop是否可以接受以下样式. 我们有一个类,它有一个公共函数,并且在构造函数中需要一个reader:public class Converter {private readonly IReader _reader;public Converter(IReader reader){_reader = reader;}public byte[] Convert(...params...){return something;} }我们有Reader1和Reader2都实现了IReader. 我想设置两个管理器:Converter1和Converter2,提供相同的公共Convert()函数,但Converte...

覆盖C#中内部属性的继承

在尝试序列化我的类和子类时,在与一堆未捕获的异常进行摔跤之后,我终于明白了我的问题:当应用于基类时,[Serializable]不会被子类继承.我对C#属性一般都很模糊,但我确实理解在创建自定义属性时,程序员能够自动继承属性. 有没有办法覆盖[Serializable]的继承?有没有什么好的理由说明为什么从一开始就没有这样做和/或首先做一个坏主意?我希望所有基类的所有子类都是可序列化的,所以只需要将属性添加到我创建的任何新子类中似乎是不...

c# – 当我真的需要从两个类继承时如何处理CS1721?

在我的C#代码中,我想要一个继承自System.MarshalByRefObject和System.Security.Principal.GenericIndentity类的CustomIdentity类. 但是当我尝试编写这样的继承时,C#会反对CS1721 error说我不能直接从多个类继承. 现在在这种情况下,很容易克服这一点 – 我将继承IIdentity,添加GenericIdentity成员变量并通过该成员变量重新实现所有IIdentity方法. 但是,如果我想从两个类继承大量方法,我该怎么做?解决方法:你没有.你不能. C#或.NET...

c# – 继承正确【代码】

我有课:internal class Stage {public long StageId { get; set; }public string StageName { get; set; }public int? Order { get; set; }public Stage(){Order = 0;} }我也有:public class GroupStage : Stage {private override long StageId { set { StageId = value; } }public GroupStage() : base() { }public void InsertStage(long groupId){}public static void SetStageOrder(long stageId, int order){....}public s...

c# – 多重继承的解决方案 – 有机会改变保护lvl【代码】

我需要一个多重继承的解决方案.我知道我可以使用接口.那将是一个很好的解决方案但…………我需要有机会改变保护级别,但接口领域必须公开…… 例如: 我有interface IInterface_1 {string field_1{set;get;}string field_2{set;get;} }interface IInterface_2 {string field_3{set;get}string field_4{set;get} }在大班我需要隐藏一些字段class MainClass : IInterface_1, IInterface_2 {public string field_1{set;get;}private st...

c# – 如果一个类继承自己实现IDisposable的接口,那么该类是否也应该实现IDisposable?【代码】

如果一个类继承自己实现IDisposable的接口,那么该类是否也应该实现IDisposable? 例如internal IMyInterface : IDisposable {Method1(); }internal ClassA : IMyInterface, IDisposable {public Method1{...}public Dispose(){...}}要么internal ClassA : IMyInterface {public Method1{...}public Dispose(){...}}对此事的任何澄清都将非常感激.谢谢解决方法:接口是契约,没有任何实现.因此,实现接口的类必须实现直接或间接继承的接...

c# – 显式运算符重载继承【代码】

我一直在考虑解决问题的方法,我不确定它是否会起作用. 假设我们有一个名为A的基类和3个子类B,C和D.A^ ----------------- | | | B C D我们还有三个等级X,Y和Z. 在我的系统对象类型B,C,D作为类型A传递,通常我必须将类型B,C,D的对象转换为对象X,Y或Z(这不是演员,我手动转换他们,因为他们完全不同). 因此,要将对象类型A转换为类型X,Y或Z,我需要首先检查子类型,然后根据子类型使用关于A对象的一些操作的结果初始...

c# – 当所有控制器都从AsyncController继承时,这是一个好习惯吗?【代码】

标题很清楚.我有一个application-BaseController,它现在继承自“Controller”类. 使用新的.NET Framework 4.5和ASP.NET MVC 4,我想使用C#5中提供的新的更简单的异步功能.我喜欢使用一些具有异步功能的操作方法(不是全部). 是否有任何陷阱将当前基类从“Controller”更改为“AsyncController”? (非异步操作方法的性能更差?) 那你觉得怎么样? 谢谢你的每一个答案. 编辑:在我看到的ILSpy中,AsyncController类不包含任何代码(MVC ...

c# – 从Control继承的类不会在表单上显示【代码】

我有一个用C#编写的类继承自Control,如下所示.class MyImage:Control{private Bitmap bitmap;public MyImage(int width, int height){this.Width = width;this.Height = height;bitmap = new Bitmap(width,height);Graphics gr = Graphics.FromImage(bitmap);gr.FillRectangle(Brushes.BlueViolet,0,0,width,height);this.CreateGraphics().DrawImage(bitmap,0,0);} }从我的主要形式,我创建了这个类的对象.并将thid对象添加...

c# – 通过仅在基类中定义serialize方法来序列化具有继承的对象?【代码】

我目前正在用C#进行游戏(用于研究目的).我正在尝试实现加载/保存功能,其中包括将游戏的每个数据保存在文件中,并且用户可以重新加载之后保存的游戏. 在游戏中,每个玩家都有一个国家级,每个国家都从国家继承.目前,我只在基类Nation上应用ISerializable接口,因为子类只有方法覆盖而没有新的属性来序列化.[Serializable()] public abstract class Nation : ISerializable {public void GetObjectData(SerializationInfo info, Streami...

c# – WebApi2属性路由继承了控制器【代码】

我正在尝试使用基本控制器创建基本的REST api,如下所示: 基类:public abstract class WebApiEntityController<TEntity> : ApiControllerwhere TEntity : EntityBase<TEntity, int> {private readonly IRepository<TEntity> _repository; protected WebApiEntityController(IRepository<TEntity> repository){_repository = repository;}[Route("")][WebApiUnitOfWork]public HttpResponseMessage Get(){return Request.CreateRes...