如何在C#中扩展静态类#
问题描述:
我正在使用微软的Visual Studio单元测试框架(因此我必须执行该项目)。我非常想念一些更高级的断言,例如您在MBUnit
中发现的AreElementsEqual
。如何在C#中扩展静态类#
我想制作它们。由于类是静态的,我不能从它继承(创建SuperAssert
),我不能添加扩展方法(因为它们是静态方法)。
我不想简单地创建另一个类,并期望消费者使用两个不同的类。我如何扩展课程?
答
由于该类是静态的,因此不能像您说的那样使用扩展方法将其他方法“添加”到类中。
你可以在合理范围内做的最接近的是以下几点:
public static class AssertExtensions
{
public static void SuperAssert(bool expression)
{
// etc...
}
}
如果你是生产工具库,让用户使用另一个类不应该是一个问题。
如果您仍然担心,为什么不为您的测试创建一个基类,并让用户使用其中的方法进行断言?
例如:
public class TestBase
{
protected void AreEqual(object obj1, object obj2)
{
Assert.AreEqual(obj1, obj2); // etc...
}
protected void SuperAssert(bool expression)
{
// etc...
}
}
'我不能添加一个扩展方法(因为他们是静态方法).'为什么呢?你能举一些关于为什么你不能添加扩展方法的代码示例吗? – 2013-03-25 11:04:46
对于AreElementsEqual,你检查了[CollectionAssert](http://msdn.microsoft.com/en-us/library/ms245294.aspx)是否不符合你的需求? – 2013-03-25 11:05:42
@IlyaIvanov:你根本不能添加一个可以在类名上调用的扩展方法,而不是一个实例。我没有看到你需要一个代码示例 - 或者它应该显示什么。 – 2013-03-25 11:06:03