gpt4 book ai didi

c# - PrivateObject 找不到属性

转载 作者:太空狗 更新时间:2023-10-30 00:08:54 25 4
gpt4 key购买 nike

我的结构基本上是这样的:

abstract class A
{
protected string Identificator { get; set; }

private void DoSomething()
{

// ...

DoSomethingSpecific();
}

protected abstract void DoSomethingSpecific();
}

由于复杂性,我需要对 DoSomething 方法进行单元测试,以确保它始终以相同的方式工作。这就是我创建以下 stub 的原因。

public class AStub : A
{
protected override void DoSomethingSpecific()
{
// nothing to do
}
}

我使用 PrivateObject 类来访问类 A 的方法和属性来实例化类 AStub。这工作了一段时间,但出于某种原因,每当我尝试访问该属性或方法时,现在都会崩溃。

测试代码如下:

var sut = new CommonIodAdapterImpl();
var accessor = new PrivateObject(sut);

accessor.SetProperty("Identificator", "blablub");
accessor.Invoke("DoSomething", null);

// assert...

抛出的异常是 MissingMethodException,告诉我找不到属性或方法。但是当我调试和检查层次结构时,包括拼写在内的每一个似乎都是正确的。

感谢您的帮助。

最佳答案

您需要将 PrivateType 参数设置为您的基类以访问该级别的私有(private)成员。

var accessor = new PrivateObject(sut, new PrivateType(typeof(A)));

关于c# - PrivateObject 找不到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4883944/

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