Tag: 覆盖

.NET事件 – 阻止订阅者订阅事件

假设我有一个暴露事件的“处理器”接口 – OnProcess。 通常,实现者进行处理。 因此,我可以安全地订阅此事件,并确保它将被解雇。 但是一个处理器不进行处理 – 因此我想阻止订户对其进行处理。 我能这样做吗? 换句话说,在下面的代码中,我希望最后一行抛出exception: var emptyProcessor = new EmptyProcessor(); emptyProcessor.OnProcess += event_handler; // This line should throw an exception.

为什么重载方法的优先级低于实例方法

我有基础A public class A { public virtual void Method(A parameter) { Console.WriteLine(MethodBase.GetCurrentMethod()); } public virtual void Method(B parameter) { Console.WriteLine(MethodBase.GetCurrentMethod()); } } 固有的B public class B : A { public virtual void Method(object parameter) { Console.WriteLine(MethodBase.GetCurrentMethod()); } public override void Method(A parameter) { Console.WriteLine(MethodBase.GetCurrentMethod()); } public override void Method(B parameter) { Console.WriteLine(MethodBase.GetCurrentMethod()); } } 静态类S带扩展方法 […]

尽管append = false,但无法关闭文件,因此无法使用streamwriter覆盖文件

使用C#VS 2010,Windows窗体。 我的目标是只打开和关闭文件一次,并多次“覆盖”它。 我永远不想追加。 打开和关闭文件一次的原因是我希望写操作最快。 我在streamwriter构造函数中传递append = false但它仍然附加而不是覆盖。 private void testSpeed() { StreamWriter sw1 = new StreamWriter(@”d:\logfolder\overwrite.txt”, false); sw1.AutoFlush = true; for (int i = 0; i < 5000; i++) { sw1.Write(i); } sw1.Close(); } 我的预期输出是文件应该只有4999但我得到这个而不是0123456789101112131415161718192021222324252627282930313233 ……………一直到4999 此文件已存在d:\ logfolder \ overwrite.txt 我的错误是什么想法?

如何在C#中使用派生返回类型覆盖方法?

我想用派生类类型覆盖虚方法。 目前最好的方法是什么? 到目前为止,我发现了两种方法: 为每个派生类型使用abstract基class ; 桥接与protected方法。 使用带有public访问器的protected实现。 基本情况(没有实现解决方案, Clone总是返回基类型A1 ): public class A1 { public int X1 { get; set; } public A1(int x1) { this.X1 = x1; } public virtual A1 Clone() { return new A1(X1); } } public class A2 : A1 { public int X2 { get; set; } public A2(int x1, […]

如何将变量传递给重写的toString()方法?

是否可以将bool变量传入重写的toString()方法,因此它可以有条件地以不同的格式打印对象?

如何按程序调用键盘按键?

问题 :从一段C#代码中调用要按下的键盘键,但这里有一个问题 :按键不应限于进程/应用程序,而是由整个操作系统接收,所以当程序在背景和不同的forms/程序有重点 目标 :制作一个锁定CapsLock和NumLock状态的程序 背景 :我有一台笔记本电脑,这两个键让我很沮丧,我想制作一个在后台运行的应用程序,并且一旦意外启用就会禁用CapsLock ,并且NumLock永远不会被禁用,我想扩展我的编码知识,我试图找到解决方案,但没有一个能解决(整个)问题。

如何为Console.WriteLine覆盖使用自己的类?

我希望我的ConsoleEngine类处理Console.WriteLine()方法。 我如何准备我的ConsoleEngine类来覆盖WriteLine()方法?

覆盖另一个程序集中的内部抽象方法

我目前正在使用另一个.net库的ac#项目。 该库(除其他外)将序列解析为树。 所有项都是从抽象类Sequenceinheritance的某种类型。 我需要稍微改变行为并自己子Sequence (我们称之为MySequence )。 树创建后,我可以用我自己的类的对象替换一些树节点。 现在,已发布新版本的库,并引入了具有以下签名的Copyfunction: internal abstract Sequence Copy(); 我试图将我的代码用于新版本并覆盖它,但无论我做什么,我都会遇到两个错误: MySequence没有实现inheritance的抽象成员’ Sequence.Copy() ‘ 和: MySequence.Copy() ‘:找不到合适的方法来覆盖 这是有道理的,因为它是抽象的( – >必须被覆盖)和内部的( – >由于来自程序集外部的隐藏可见性,它不能被覆盖) 所以,问题是,我明白为什么会这样,但不知道该怎么办。 对我的项目来说,将Sequence子类化是至关重要的。 而我也不明白的是,为什么首先允许internal abstract修改器,因为它基本上允许从程序集外部对整个类进行任何子类化! 有什么方法可以解决这个问题吗? 通过反思或什么? 提前致谢!

覆盖部分类中的虚方法

我目前正在使用nopCommerce源代码并尽力避免编辑源代码,而是使用与源代码分开的部分类和插件,我们是否需要升级版本。 我想通过在同一个程序集中使用部分类来对下订单的代码进行一些更改: Orignal源代码: namespace Nop.Services.Orders { public partial class OrderProcessingService : IOrderProcessingService { public virtual PlaceOrderResult PlaceOrder(ProcessPaymentRequest processPaymentRequest) { //…. 我的部分课程: namespace Nop.Services.Orders { public partial class OrderProcessingService : IOrderProcessingService { public override PlaceOrderResult PlaceOrder(ProcessPaymentRequest processPaymentRequest) { //…. 当我尝试编译此代码时,我收到一个错误: 类型’Nop.Services.Orders.OrderProcessingService’已经使用相同的参数类型定义了一个名为’PlaceOrder’的成员 但我使用override ,原始类中的方法是virtual ,有人可以告诉我这里我出错了,以及如何覆盖此方法?

如何在C#中覆盖默认值(T)?

可能重复: 如何更改默认(T)在C#中返回的内容 print(default(int) == 0) //true 同样,如果我有自定义对象,其默认值将为null。 print(default(Foo) == null) //true 我可以为default(Foo)自定义值而不是null吗? 例如,像这样: public static override Foo default() { return new Foo(); } 这不会编译。 谢谢..