Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基类实现注意事项_C#_Inheritance_Base Class - Fatal编程技术网

C# 基类实现注意事项

C# 基类实现注意事项,c#,inheritance,base-class,C#,Inheritance,Base Class,我写了一个类来做一些事情,过了一段时间,我发现许多其他类都共享这个功能,所以决定实现一个基类(C#中的抽象)并将所有共享的功能都放在其中 既然不可能实例化这样一个类,那么如何调试它呢 开发基类有什么实际的考虑吗?我会制作一个模拟对象,让您从新抽象继承。您甚至可以使用模拟框架来实现这一点 保留它来运行单元测试,除非您使用Rhino Mocks(我个人最喜欢的模拟框架)之类的东西。我会制作一个模拟对象,您可以从新的抽象中继承它。您甚至可以使用模拟框架来实现这一点 保留它来运行单元测试,除非您使用Rh

我写了一个类来做一些事情,过了一段时间,我发现许多其他类都共享这个功能,所以决定实现一个基类(C#中的抽象)并将所有共享的功能都放在其中

既然不可能实例化这样一个类,那么如何调试它呢


开发基类有什么实际的考虑吗?

我会制作一个模拟对象,让您从新抽象继承。您甚至可以使用模拟框架来实现这一点


保留它来运行单元测试,除非您使用Rhino Mocks(我个人最喜欢的模拟框架)之类的东西。

我会制作一个模拟对象,您可以从新的抽象中继承它。您甚至可以使用模拟框架来实现这一点


保留它来运行单元测试,除非您使用Rhino Mocks(我个人最喜欢的模拟框架)之类的东西。

要调试基类,请创建一个派生类的实例并通过该实例进行调试


您还可以考虑创建另一个派生类,该类除了继承基类之外什么都不做,所以您可以测试它。

调试基类,创建派生类之一的实例并调试通过。


你也可以考虑创建另一个派生类,它除了继承基类之外什么都不做,所以你可以测试它。

首先,你的类不需要抽象来继承它,如果它不是抽象的,你可以实例化它。否则,只需在具体实现中调试它即可。首先,类继承它不需要抽象,如果它不是抽象的,可以实例化它。否则,只需在具体实现中调试它即可

您可以在测试夹具组件中创建一个派生版本(我假设您正在对基类进行单元测试,因此需要单独实例化它),仅用于测试基类的功能。派生版本将提供测试基础所需的任何附加基础设施。您可以决定创建几个派生版本来测试抽象基类的不同方面。

您可以在测试夹具程序集中创建一个派生版本(我假设您正在对基类进行单元测试,因此需要单独实例化它),只是为了测试基类的功能。派生版本将提供测试基础所需的任何附加基础设施。您可以决定创建几个派生版本来测试抽象基的不同方面。

您可以使用从抽象基继承的派生类来调试抽象基。调试时,您需要记住所做的任何更改,并检查结果行为是否仍由所有派生类共享。

您可以使用从派生类继承的派生类进行调试。调试时,您需要记住所做的任何更改,并检查结果行为是否仍由所有派生类共享。

如果您需要测试它,可以执行以下两项操作之一:

1) 您可以拥有非抽象的基类,因此可以实例化基类并进行测试


2) 在您的测试项目中,您可以在底座周围制作一个模拟包装器并测试模拟。

如果需要测试,您可以执行以下两项操作之一:

1) 您可以拥有非抽象的基类,因此可以实例化基类并进行测试

2) 在您的测试项目中,您可以围绕基础创建一个模拟包装器,并测试模拟

因为不可能实例化 这样一个类怎么调试呢

如果您询问如何实际测试它(即单元测试),我通常会编写一个从基类继承的测试类,并以这种方式进行测试。如果您询问的是实际调试,那么在运行的应用程序中使用子类实例化它之后,它与任何其他类都没有什么不同。这有意义吗

有什么实际考虑吗 用于开发基类

这些年来,我听到了两种观点:1)任何普通的东西都放在基类中;2)如果不是真正的继承,就不要建立基类。我倾向于设计/编码前者,但#2确实有它的优点,因为它可以使设计在某种程度上违反直觉。只有我的0.02美元

因为不可能实例化 这样一个类怎么调试呢

如果您询问如何实际测试它(即单元测试),我通常会编写一个从基类继承的测试类,并以这种方式进行测试。如果您询问的是实际调试,那么在运行的应用程序中使用子类实例化它之后,它与任何其他类都没有什么不同。这有意义吗

有什么实际考虑吗 用于开发基类


这些年来,我听到了两种观点:1)任何普通的东西都放在基类中;2)如果不是真正的继承,就不要建立基类。我倾向于设计/编码前者,但#2确实有它的优点,因为它可以使设计在某种程度上违反直觉。只是我的$0.02…

调试抽象类

没有任何东西阻止您调试抽象类,当调试子类时,调试器会根据需要自动将您重定向到父类的实现

设计类层次结构

尽管在.NET中继承很简单,但如果没有清晰的类层次结构,很快就会变得难以维护

继承并不是确保OO中重用的唯一方法

以下几条建议可能会有所帮助:

  • 确保你的基类有明确的责任
  • 保持你继承遗产的深度较低
  • 倾向于