是否可以将方法限制为仅在友好程序集中使用虚拟方法?

Is it possible to restrict methods to virtual ONLY in friendly assemblies?

对于单元测试,我希望能够以类似于 InternalsVisibleTo.

的方式将方法仅针对特定程序集转换为虚拟方法

例如,如果我在装配 Animals:

public void methodDog()
{
}

我想假装成:

public virtual void methodDog()
{
}

..在程序集内 AnimalsTests

我们如何在不使用 AOP 的情况下将某些方法标记为仅当特定程序集访问时才为虚拟方法?

据我所知这是不可能的,但你可以考虑:

  1. 创建接口并在测试时实现它,或者;

  2. 创建内部虚方法,由你的public方法调用并覆盖内部虚方法,例如:


public void methodDog()
{
    methodDogInternal();
}

internal virtual void methodDogInternal()
{
}