gpt4 book ai didi

c# - 通过公共(public)接口(interface)访问内部方法

转载 作者:行者123 更新时间:2023-11-30 21:35:29 25 4
gpt4 key购买 nike

<分区>

现状

假设我有一个带有内部方法的类:

class MyClass : IMyClass
{
public void PublicMethod() { ... }
internal void InternalMethod() { ... }
}

实现了一个接口(interface):

interface IMyClass
{
void PublicMethod() { ... }
}

还有一个包含 MyClass 实例和其他具体类的容器类:

class ContainerClass
{
public MyClass myClass;
...
}

ContainerClass 由各种程序集使用。当在与 MyClass 相同的程序集中使用时,调用方法可以调用 containerClass.myClass.InternalMethod()


问题

为了使测试更容易模拟,我现在尝试用接口(interface)而不是具体类替换 ContainerClass 的属性,例如:

class ContainerClass
{
public IMyClass myClass;
...
}

但是,如果我这样做,InternalMethod 将无法再使用 containerClass.myClass.InternalMethod() 调用,因为该方法不界面上不存在...也不能它,因为它是内部。但是,我无法将接口(interface)设置为内部接口(interface),因为 ContainerClass 也被其他程序集使用。

假设我无法更改对该方法的内部 访问。还有别的办法吗?


编辑: 这不同于 How to Mock the Internal Method of a class?因为我不是要模拟内部方法,所以我试图在用接口(interface) (IMyClass) 替换具体类 (MyClass) 时保持它暴露。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com