草庐IT

c# - 如何在新实现的接口(interface)或基类之间做出决定?

当谈到实现时,我应该如何决定使用基类型还是接口(interface)?我试图解决几个例子,但我没有得到完整的想法:(关于如何以及为什么的例子将不胜感激.. 最佳答案 基类,无论是否抽象,都可以包含已实现的成员。接口(interface)不能。如果您的所有实现都将以相似的方式执行,那么基类可能是可行的方法,因为您的所有子类都可以共享基类成员的相同实现。如果他们不打算共享实现,那么接口(interface)可能是可行的方法。例子:classPerson{stringName{get;set;}}classEmployee:Person{

c# - 确保调用基类的静态构造函数的最佳方法是什么?

documentationonstaticconstructorsinC#说:Astaticconstructorisusedtoinitializeanystaticdata,ortoperformaparticularactionthatneedsperformedonceonly.Itiscalledautomaticallybeforethefirstinstanceiscreatedoranystaticmembersarereferenced.最后一部分(关于它何时被自动调用)让我陷入了循环;在阅读那部分之前,我认为通过以任何方式简单地访问一个类,我可以确定它的基类的静态构

c# - 代码分析 CA1063 在从 IDisposable 派生并在基类中提供实现时触发

我有一些代码会触发代码分析警告CA1063:CA1063:Microsoft.Design:RemoveIDisposablefromthelistofinterfacesimplementedby'Functionality'andoverridethebaseclassDisposeimplementationinstead.但是,我不确定我需要做什么来修复这个警告。简而言之,我有一个派生自IDisposable的接口(interface)IFunctionality。类Functionality实现了IFunctionality但派生自类Reusable以便能够重用som代码。R

c# - WinForm UserControl 的通用基类

我为WinFormUserControl创建了一个通用基类:publicpartialclassBaseUserControl:UserControl{publicvirtualvoidMyMethod(){//somebasestuffhere}}以及基于此的UserControl:publicpartialclassMyControl:BaseUserControl{publicoverridevoidMyMethod(){//somespecificstuffherebase.MyMethod();}}它工作正常,但无法在VisualStudio设计器中编辑MyControl,因

c# - 基类中的 NUnit 和 [SetUp]

我正在查看一些使用NUnit的测试代码,它继承自包含[SetUp]属性的基类:publicclassBaseClass{[SetUp]publicvoidSetUp(){//dosomething}}[TestFixture]publicclassDerivedClass:BaseClass{[SetUp]publicvoidSetUp(){//dosomethingelse,withnocalltobase.SetUp()}//testsrundownhere.//[Test]//[Test]//etc}派生类当然需要在基类的SetUp()方法中完成的工作。我是不是遗漏了什么,或者当

c# - 如何将属性添加到基类的属性

我有几个像这样的模型类:publicclassMyModelBase{publicstringName{get;set;}}publicclassMyModel:MyModelBase{publicstringSomeOtherProperty{get;set;}}MyModel如何向Name属性添加[Required]属性? 最佳答案 在父类中声明属性为virtual:publicclassMyModelBase{publicvirtualstringName{get;set;}}publicclassMyModel:MyMode

c# - 为什么在基类构造函数中设置时重写的 get-only 属性保持为 null?

我尝试了以下示例:publicclassTestBase{publicvirtualstringReadOnly{get;}publicTestBase(){ReadOnly="frombase";}}classTest:TestBase{publicoverridestringReadOnly{get;}publicTest(){//nothinghere}}当我创建一个Test实例时,我看到ReadOnly保持为空。但为什么?我真的不明白它的窍门,有人可以向我解释为什么会这样吗?至少我会预料到一个错误,即不能在所属类之外设置只读属性。 最佳答案

C# - 使所有派生类调用基类构造函数

我有一个基类Character,它有几个派生自它的类。基类有各种字段和方法。我所有的派生类都使用相同的基类构造函数,但如果我不在派生类中重新定义构造函数,我会得到错误:错误:“子类”类不包含采用此数量参数的构造函数我不想在每个派生类中重新定义构造函数,因为如果构造函数更改,我必须在每个类中更改它,请原谅任何误解,这与只编写一次代码的想法背道而驰? 最佳答案 您可以使用以下语法从派生类调用基类构造函数:publicDerivedClass():base(){//Doadditionalworkhereotherwiseyoucanle

c# - 我是否应该密封所有我知道不应该用作基类的类?

我是否应该密封所有我知道不应该用作基类的类,即使没有明显的性能或安全问题,还是这只是增加了麻烦? 最佳答案 一个可扩展的类实现了它可以被扩展的特性——这个特性与该类的任何其他特性一样,应该被视为一个特性,与方法没有区别。应仔细考虑所有功能,以确保它们满足使用该功能的客户的目标。需要设计、实现、审查安全问题、调试、记录和维护功能。所有这些都需要付出努力,而努力通常需要付出金钱。你花谁的钱?他们可能对您是否应该执行此功能有意见。基本上,您有三个选择:1)花钱做这个功能,这样你就有信心它是正确的、健壮的、安全的并且满足用户需求。2)不执行

c# - 如何从基类中找到子类名?

在运行时,在基类中,如何找到当前的子类名? 最佳答案 获取当前对象的类型,然后是它的名称。this.GetType().Name 关于c#-如何从基类中找到子类名?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4774820/