Tag: abstract class

使用部分类而不是抽象类有什么好处?

我一直在阅读编程Microsoft®VisualC#®2008:语言,以便更好地理解C#以及可以用它做些什么。 我遇到过从ASP.Net的Page类中遇到的部分类。 对我来说,似乎你可以用抽象类和被覆盖的类来做部分类。 显然,一个团队将通过抽象方法控制界面,但无论如何你都会相互依赖。 如果目标是协作,则不是源控制和其他工具解决的问题。 我只是错过了部分课程的要点。 也有人可以提供真实的世界使用。

通过基类创建派生类的实例,无需硬编码

我的问题如下: 我有一个需要抽象的基类。 它有几个派生类,每个派生类都有自己的特殊属性,这些属性包含在Properties成员中。 我需要能够创建这些派生类之一的新实例,以便所有成员都是等效的,但修改新实例不会修改原始实例。 最后,我想在不必在基类的每个派生类型中进行硬编码的情况下执行此操作。 (诚​​然,这将是最简单的解决方案,但这不是重点) 所有派生类都满足与基类的“is-a”关系。 这是代码: public abstract class BaseClass { //Default properties here int x, y, z, …; //Custom made class to hold custom properties protected Attributes Properties; public BaseClass createNewInstance() { return createNewInstanceStep1(); } //Each derived class implements their own version of this, //to handle copying any custom members contained in […]

我可以强制子类覆盖方法而不使其抽象化吗?

我有一个带有一些抽象方法的类,但我希望能够在设计器中编辑该类的子类。 但是,设计者无法编辑子类,除非它可以创建父类的实例。 所以我的计划是用存根替换抽象方法并将它们标记为虚拟 – 但是如果我创建另一个子类,如果我忘记实现它们,我将不会得到编译时错误。 有没有办法标记方法,以便它们必须由子类实现,而不将它们标记为抽象?

如何使用moq测试抽象类中的具体方法?

在过去,当我想模拟一个抽象类时,我只是在扩展抽象类的代码中创建一个模拟类,然后在我的unit testing中使用该类… public abstract class MyConverter : IValueConverter { public abstract Object Convert(…) { … }; public virtual Object ConvertBack(…) { … } } private sealed class MockedConverter : MyConverter { … } [TestMethod] public void TestMethod1() { var mock = new MockedConverter(); var expected = …; var actual = mock.ConvertBack(…); Assert.AreEqual(expected, actual); } 我想养成使用Moq的习惯。 […]

什么是公共构造函数在C#中的抽象类中的实用性?

如果抽象类中的公共构造函数只能由其派生类调用,则它应该在function上等同于受保护的构造函数。 对? 在抽象类中声明公共构造函数而不是受保护构造函数有什么区别吗? 你会用它做什么用的? 为什么编译器没有投诉?

C#:在不定义新类的情况下创建抽象类的实例

我知道它可以用Java完成,因为我过去曾广泛使用过这种技术。 Java中的一个例子如下所示。 (附加问题。这种技术被称为什么?如果没有名称,很难找到这样的例子。) public abstract class Example { public abstract void doStuff(); } public class StartHere{ public static void main(string[] args){ Example x = new Example(){ public void doStuff(){ System.out.println(“Did stuff”); } }; x.doStuff(); } } 现在,我的主要问题是,这也可以在C#中完成,如果是这样,怎么样?

你能帮我理解一个实际例子中的抽象类和接口的用法吗?

你能否给我一个对抽象类和inheritance使用几乎过于简单化的理解并帮助我,这样我才能真正理解这个概念以及如何实现? 我有一个项目,我正在努力完成,并且失去了如何实施。 我一直在和我的教授聊天,并被告知,如果我无法弄明白,我可能还没准备好上课。 我已经完成了prequestite课程,但仍然无法理解这些概念。 为了澄清,到目前为止我所做的项目如下。 我还没有填写狗/猫类等。 你能指点一下吗? 我不是要求任何人给我“答案”。 我只是迷失在哪里。 我参加在线课程,他与我的沟通工作一直令人不安。 我刚刚完成了所有其他课程的4.0,所以我愿意付出努力,但我对这些概念的理解以及如何实际应用它们感到迷茫。 是否有任何意见或帮助可以让我在这个项目中取得进一步进展? 我要实现的内容如下: 概述: 本练习的目的是演示Interfaces,Inheritance,Abstract classes和Polymorphism的使用。 您的任务是获取提供的程序shell并添加适当的类和相应的类成员/方法,以使此程序正常运行。 您不能对提供的任何代码进行更改,您只能添加您编写的类。 尽管有许多方法可以使程序正常工作,但您必须使用演示接口使用的技术, inheritance,抽象类和多态。 同样,为了清楚起见,您可以添加到提供的代码,但不能更改或删除任何代码。 提供的代码将使用非常少的附加代码,并将满足练习的要求。 如果成功完成分配,程序运行时应输出以下语句: 我的名字是Spot,我是一只狗 我的名字是费利克斯,我是一只猫 要求: 1)您必须有一个名为“Animal”的抽象基类,Dog和Cat类可以从中派生出来。 2)Animal基类必须从接口’IAnimal’派生,它是唯一应该从IAnimal派生的类。 3)由于所有动物都有一个名字,一个名字不是一个特定于狗或猫的属性,动物 基类应该是存储名称的位置以及实现WhatIsMyName get-property的位置。 4)您需要创建一个仅从Animal基类派生的Dog和Cat类。 5)Dog和Cat类应该实现WhatAmI get-property并返回相应的字符串值。 您无法更改的代码: using System; namespace IT274_U2 { public interface IAnimal { string WhatAmI { get; } string WhatIsMyName { get; } } […]

内部抽象方法。 为什么有人会拥有它们?

我今天正在进行一些代码审查,并遇到了一些开发人员编写的旧代码。 它就是这样的 public abstract class BaseControl { internal abstract void DoSomething(); } 如果在同一个程序集中有一个派生类,它就可以工作 public class DerivedControl : BaseControl { internal override void DoSomething() { } } 但是在不同的程序集中派生基类会产生编译时错误 DerivedControl does not implement inherited abstract member ‘BaseControl.DoSomething() 这让我思考。 为什么有人会将方法声明为内部抽象?

“无法创建抽象类或接口的实例”C#错误消息

我将我的基类更改为abstract项目,现在我收到以下错误: 无法创建抽象类或接口的实例 我收到错误是因为不允许命名abstract类的新实例吗? newPlane = new Airplane_Abstract(name, position);

如何在C#中禁用无参数构造函数

abstract class CAbstract { private string mParam1; public CAbstract(string param1) { mParam1 = param1; } } class CBase : CAbstract { } 对于类CBase,应该通过提供参数来初始化它,那么如何禁用CBase类的无参数构造函数?