C#反射/NUnit-一个生活在对象实例的公共字段中的Func是私有的.为什么?我该如何包装它以使其公开



我试图实现的目标/为什么:我正在尝试扩展NUnit,以将特定类类型实例中的Func委托识别为单元测试。我使用的是一个实现IFixtureBuilder的自定义属性,当您希望从用[Test]装饰的方法之外的其他方法推断NUnit TestMethod时,可以使用该接口。

我可以获得对Func及其MethodInfo的引用,但NUnit只允许我从IsPublic==true的MethodInfo对象创建一个TestMethod。考虑一下这里的例子:

https://dotnetfiddle.net/JHNBm6

在我上面的例子中,变量"firstMethod"的IsPublic属性为false。为了让我将这个函数识别为NUnit测试方法,它需要是公共的。

为什么这个Func代表被认为是私人的?我的列表位于TestClass实例的公共字段中。有没有办法";"包裹";通过System.Reflection技巧调用这些函数,这样我就有了一个公开的MethodInfo?

在向List添加匿名函数时返回false。尝试在下面添加,您将获得IsPublic==true

public class TestClass
{
public List<Func<Task<bool>>> tests = new List<Func<Task<bool>>>();
public TestClass()
{
tests.Add(TestMethod1);
}
public Task<bool> TestMethod1()
{
return Task.FromResult(true);
}
}

相关内容

  • 没有找到相关文章

最新更新