我目前正在开发一个由其他人完成的asp.net站点,它的功能复杂得可笑……嗯,我是这么认为的!几乎每个类都继承自另一个类,然后是另一个类,然后是另一个类,依此类推......你必须平均达到8/10级才能获得基类,有时甚至更多!这些类内部还有其他类,它们遵循与Uber继承相同的模式。这让我多次迷失在代码中,结果天知道在visualstudio上打开了多少个标签页。这是好的/正常的做法还是不好的做法?我觉得这是一种不好的做法,因为过度使用继承导致代码变得不可扩展,如此简单的事情变得过于复杂......但我可能是错的:)谢谢! 最佳答案
publicclassBusinessObjectswhereO:BusinessObject{voidSomeMethod(){vars=O.MyStaticMethod();//是否有正确的面向对象方法来完成此操作,或者我是否需要诉诸反射?编辑:对于这个问题,我试图过分简化这个问题,但遗漏了一个重要的观点。MyStaticMethod使用反射并需要派生类型来返回正确的结果。然而,我刚刚意识到我的设计中的另一个缺陷,即我不能拥有静态虚拟方法,我认为这就是我所需要的。看来我需要找到另一种方法来解决这个问题。 最佳答案 您不能通过泛型
假设我正在为我的应用程序定义一个浏览器实现类:classInternetExplorerBrowser:IBrowser{privatereadonlystringexecutablePath=@"C:\ProgramFiles\...\...\ie.exe";...codethatusesexecutablePath}乍一看这似乎是个好主意,因为executablePath数据靠近将使用它的代码。当我尝试在另一台具有外语操作系统的计算机上运行相同的应用程序时,问题就来了:executablePath将具有不同的值。我可以通过AppSettings单例类(或其等效类之一)解决此问题,但
我的应用程序使用连接到PC的测量仪器。我想让使用来自不同供应商的类似仪器成为可能。所以我定义了一个接口(interface):interfaceIMeasurementInterface{voidInitialize();voidClose();}到目前为止一切顺利。在测量之前,我需要设置仪器,这意味着不同仪器的参数会有很大不同。所以我想定义一个方法,该方法采用可以具有不同结构的参数:interfaceIMeasurementInterface{voidInitialize();voidClose();voidSetup(objectParameters);}然后我会将对象转换到我需要
老实说,我不确定如何表达这个问题,所以如果实际问题不是您根据标题所期望的,请原谅我。C#是我编写过的第一种静态类型语言,到目前为止,它的这一方面一直让我非常头疼。我很确定我对围绕如何以静态类型方式设计系统的核心思想没有很好的把握。这是我正在尝试做的事情的粗略想法。假设我有一个这样的类层次结构:abstractclassDataMold{publicabstractTResult{get;}}classTextMold:DataMold{publicstringResult=>"ABC";}classNumberMold:DataMold{publicintResult=>123}现在假
这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:PropertiesvsMethods关于何时使用属性与方法,是否有任何规则或一般最佳实践?从技术上讲,任何无参数方法都可以在属性中创建,任何属性都可以成为方法,但有时很难决定何时使用另一个方法。我希望得到一些你们在两者之间做出决定时牢记的规则。
非静态类可以有静态方法和变量,为什么静态类不能有非静态方法和变量?在非静态类中使用静态方法和变量有什么好处?尽管在非静态类中使用静态构造函数是可以理解的。 最佳答案 静态类首先不能被实例化,因此即使您可以声明非静态(实例)成员,也永远无法访问它们。由于这个原因确实没有必要允许它,所以该语言只是禁止它。请记住,静态类只是类,而有两件事与非静态类直接相关:类本身,以及类的实例/对象。非静态类可以同时具有静态成员和非静态成员,因此静态成员适用于该类,而非静态成员适用于该类的实例。 关于c#
我试图在每次单击时更改按钮的文本。按钮开始为“ON”。当我第一次点击它时,它应该变成“OFF”,当我再次点击它时,它应该变回On。我知道如何在点击时将其更改为“OFF”,但我不确定如何检查二次点击以便将文本更改回“ON”。到目前为止,这是我的代码:privatevoidOrdersButton_Click(objectsender,EventArgse){OrdersButton.Text="TurnOrdersOff";} 最佳答案 尝试privatevoidOrdersButton_Click(objectsender,Even
这是否会给代码带来任何异味或违反SOLID原则?publicstringSummarize(){IListdisplayableItems=getAllDisplayableItems();StringBuildersummary=newStringBuilder();foreach(IDisplayableitemindisplayableItems){if(itemisHuman)summary.Append("Thepersonis"+item.GetInfo());elseif(itemisAnimal)summary.Append("Theanimalis"+item.Get
这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whycan’tIcreateanabstractconstructoronanabstractC#class?抽象类的Constructor可以标记为'abstract'吗?