【发布时间】:2022-01-04 06:37:49
【问题描述】:
首先,这段代码的目的是在需要时重置类的静态变量,我知道这不是一个优雅的解决方案,但至少目前只能这样做。 这是代码
public static void ResetStaticObjects<T>()
{
var type = typeof(T);
if (type != null)
{
var items = type.GetProperties(BindingFlags.Public | BindingFlags.Static);
foreach (var item in items)
{
item.SetValue(type, null, null);
}
}
}
这就是我现在的称呼
HelperClass.ResetStaticObjects<DemoClass>();
我想要的是传递一个列表而不是传递一个类,然后在所有这些类上调用相同的函数
【问题讨论】:
-
你不能写一个有 N 个类型参数的泛型函数。在这种情况下,您必须将
IEnumerable<Type>传递给函数。HelperClass.ResetStaticObjects(new [] { typeof(Type1), typeof(Type2), typeof(Type3)}); -
你不能只将ValueTypes设置为NULL,你必须检查每个属性不是ValueType
-
typeof(T)什么时候会为空?有什么办法typeof可能返回 null -
@Flydog57 不,它不会为空
-
@Learning - 谢谢。
标签: c# asp.net-core static-methods system.reflection