显式调用静态构造函数

2024-04-29

我想为下面的课程编写单元测试。
如果名称不是“MyEntity”,则 mgr 应为空。
消极的单元测试
使用 Manager 私有访问器,我想将名称更改为“Test”,以便 mgr 应该为空。 然后会验证 mgr 值。 为了实现这一点,我想显式调用静态构造函数 但是当我使用调用静态构造函数时

Manager_Accessor.name = "Test"
typeof(Manager).TypeInitializer.Invoke(null, null); 

name 始终设置为“MyEntity”,如何将 name 设置为“Test”并调用静态构造函数。

public class Manager
{        
        private static string name= "MyEntity";

        private static object mgr;

        static Manager()
        {
            try
            {
                mgr = CreateMgr(name);
            }
            catch (Exception ex)
            {
                mgr=null;
            }
        }
}

正如我今天发现的,静态构造函数可以直接调用:

from 另一篇 Stackoverflow 帖子 https://stackoverflow.com/a/2654684/2505186

其他答案都很好,但如果你需要强制上课 无需引用类型即可运行的构造函数(即 反射),您可以使用:

Type type = ...;
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(type.TypeHandle);  

我必须将此代码添加到我的应用程序中解决 .net 4.0 CLR 中可能存在的错误 https://stackoverflow.com/q/29493473/2505186.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显式调用静态构造函数 的相关文章

随机推荐