草庐IT

抽象度

全部标签

c# - 你能模拟一个实现接口(interface)和抽象类的对象吗?

是否可以使用Moq模拟一个实现接口(interface)和抽象类的对象?即:publicclassMyClass:SomeAbstractClass,IMyClass你能mock这个吗? 最佳答案 您可以模拟任何接口(interface)以及任何抽象或虚拟成员。基本上就是这样。这意味着以下情况是绝对可能的:varimock=newMock();varaMock=newMock();如果继承自SomeAbstractClass的成员没有被密封,你也可以mockMyClass:varmcMock=newMock();这是否有意义取决于M

c# - 为什么 TextWriter.Write(char) 不是抽象的?

TextWriter是一个抽象类,具有一个抽象函数-EncodingEncoding{get;}。实现还必须实现voidWrite(char),但这个函数不是抽象的-为什么?默认实现不执行任何对我来说没有意义的操作。 最佳答案 这是TextWriter的设计错误。根据Reflector,所有其他Write*方法都简化为Write(char)。文档说了类似的话。Write(char)应该是抽象的。没有注意到这一点的开发人员可能会被误导去创建一个大部分都有效的实现,但是当编写一个char(这并不常见)时,它可能什么都不做。令人惊讶的行为

c# - 抽象继承成员未实现

我在VisualStudio2013中创建了一个新的MVC项目,在使用空模板(带模型)创建View并使用布局页面(设置为空)后,我收到以下信息:这会导致View呈现不正确。我曾尝试在其他地方寻找解决方案,但无济于事。清洁/重建解决方案也无济于事。令人恼火的是它在一个全新的项目上这样做。关于如何修复的任何想法?附加信息:View/Web.config下载View模型usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.ComponentModel.DataAnnotations;usingSystem

c# - 如果接口(interface)调用 Dispose 的实现是否是泄漏抽象

考虑这段代码:publicclassMyClass(){publicMyClass(){}publicDoSomething(){using(varservice=newCustomerCreditServiceClient()){varcreditLimit=service.GetCreditLimit(customer.Firstname,customer.Surname,customer.DateOfBirth);}}}我们现在想重构它以松耦合。我们最终得到这个:publicclassMyClass(){privatereadonlyICustomerCreditServices

c# - 为什么我不能从 System.Enum 抽象类派生?

MSDN将System.Enum定义为一个抽象类:[SerializableAttribute][ComVisibleAttribute(true)]publicabstractclassEnum:ValueType,IComparable,IFormattable,IConvertible而且MSDN对抽象类也有这样的说法:Anabstractclasscannotbeinstantiated.Thepurposeofanabstractclassistoprovideacommondefinitionofabaseclassthatmultiplederivedclassescan

c# - 抽象单例背后的 IoC 容器——做错了吗?

一般来说,我喜欢让应用程序完全不了解IoC容器。但是我遇到了需要访问它的问题。为了消除痛苦,我使用了一个基本的单例。在你跑到山上或拔出霰弹枪之前,让我回顾一下我的解决方案。基本上,IoC单例绝对什么都不做,它只是委托(delegate)给一个必须传入的内部接口(interface)。我发现这使得使用单例的工作不那么痛苦。下面是IoC包装器:publicstaticclassIoC{privatestaticIDependencyResolverinner;publicstaticvoidInitWith(IDependencyResolvercontainer){inner=conta

c# - new() 的通用类型约束和抽象基类

这里我们有一个简单的类层次结构,并且将泛型与typeconstraint一起使用new()的publicabstractclassBase{}publicclassDerived:Base{}publicclassTestClass{privatevoidDoSomething(Targ)whereT:new(){}publicvoidTestMethod(){Derivedd1=newDerived();DoSomething(d1);//compilesBased2=newDerived();DoSomething(d2);//compileerror}}代码在指示的行编译失败,错

c# - 是否有可能将 C# 中的索引器声明为抽象成员?

如标题所述,我想在抽象类中声明一个索引器objectthis[intindex]作为抽象成员。这有可能吗?是否也可以在接口(interface)中声明它? 最佳答案 Ofcourse:publicabstractclassClassWithAbstractIndexer{publicabstractintthis[intindex]{get;set;}} 关于c#-是否有可能将C#中的索引器声明为抽象成员?,我们在StackOverflow上找到一个类似的问题:

c# - 在抽象类中有一个构造函数好吗?

在抽象类中有一个构造函数好吗?创建抽象类的构造函数是一个好的编程习惯吗?由于抽象类不能被初始化,所以他们的子类被初始化。以下是我的类结构。publicabstractclassScheduler{privateStoryboardtimer;protectedScheduler(){//initializethetimerhere.timer=newStoryboard();this.PollInterval=60;}}publicclassTaskScheduler:Scheduler{publicTaskScheduler():base(){}} 最佳答

c# - 抽象方法声明 - 虚拟?

在MSDN上,我发现在抽象方法声明中使用“virtual”修饰符是错误的。我的一位同事应该是非常有经验的开发人员,但他在他的代码中使用了这个:publicabstractclassBusinessObject{publicvirtualvoidRender(){}publicvirtualvoidUpdate(){}}它是否正确? 最佳答案 如果抽象类提供了一个可选点,继承类可以在其中改变行为,这就有意义了。因此,通过这种方式继承的类将不会被迫实现它,但如果需要的话它们可以实现。通常这个方法被抽象类调用:publicAddFoo(F