如何在泛型函数中传递和迭代 List<T>
How to pass and iterate over List<T> in a generic function
首先,此代码的目的是在需要时重置 class 的静态变量,我知道这不是一个优雅的解决方案,但至少目前只能做到这一点。
这是代码
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>();
我想要的是传递一个列表而不是传递一个 class 然后在所有这些 classes
上调用相同的函数
下面是我发布的问题的答案
public static void ResetStaticObjects<Type>(IEnumerable<Type>types)where Type:System.Type
{
foreach(var item in types)
{
var props = item.GetProperties(BindingFlags.Public | BindingFlags.Static);
foreach (var prop in props)
{
prop.SetValue(item, null, null);
}
}
}
我们可以这样称呼它
HelperClass.ResetStaticObjects(new[] { typeof(Class1), typeof(Class2)});
首先,此代码的目的是在需要时重置 class 的静态变量,我知道这不是一个优雅的解决方案,但至少目前只能做到这一点。 这是代码
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>();
我想要的是传递一个列表而不是传递一个 class 然后在所有这些 classes
上调用相同的函数下面是我发布的问题的答案
public static void ResetStaticObjects<Type>(IEnumerable<Type>types)where Type:System.Type
{
foreach(var item in types)
{
var props = item.GetProperties(BindingFlags.Public | BindingFlags.Static);
foreach (var prop in props)
{
prop.SetValue(item, null, null);
}
}
}
我们可以这样称呼它
HelperClass.ResetStaticObjects(new[] { typeof(Class1), typeof(Class2)});