using System;
using System.Linq;
using System.Reflection;
namespace SO16515341
{
class RestMethods
{
static void Main()
{
Console.WriteLine(A.Test);
A.Clear();
Console.WriteLine(A.Test);
}
public static void ClearAllStaticValues(Type t)
{
var varList = t.GetFields(BindingFlags.NonPublic | BindingFlags.Static);
varList.Where(x => x.FieldType == typeof(Int32)).ToList().ForEach(x => x.SetValue(null, 0));
}
}
public class A
{
private static int test = 100;
public static int Test { get { return test; } }
public static void Clear()
{
//static member
RestMethods.ClearAllStaticValues(typeof(A));
}
public void ClearInstance()
{
//instance member
RestMethods.ClearAllStaticValues(GetType());
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CgpuYW1lc3BhY2UgU08xNjUxNTM0MQp7CiAgICBjbGFzcyBSZXN0TWV0aG9kcwogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oKQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoQS5UZXN0KTsKICAgICAgICAgICAgQS5DbGVhcigpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShBLlRlc3QpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIENsZWFyQWxsU3RhdGljVmFsdWVzKFR5cGUgdCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciB2YXJMaXN0ID0gdC5HZXRGaWVsZHMoQmluZGluZ0ZsYWdzLk5vblB1YmxpYyB8IEJpbmRpbmdGbGFncy5TdGF0aWMpOwogICAgICAgICAgICB2YXJMaXN0LldoZXJlKHggPT4geC5GaWVsZFR5cGUgPT0gdHlwZW9mKEludDMyKSkuVG9MaXN0KCkuRm9yRWFjaCh4ID0+IHguU2V0VmFsdWUobnVsbCwgMCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgY2xhc3MgQQogICAgewogICAgICAgIHByaXZhdGUgc3RhdGljIGludCB0ZXN0ID0gMTAwOwoKICAgICAgICBwdWJsaWMgc3RhdGljIGludCBUZXN0IHsgZ2V0IHsgcmV0dXJuIHRlc3Q7IH0gfQogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBDbGVhcigpCiAgICAgICAgewogICAgICAgICAgICAvL3N0YXRpYyBtZW1iZXIgCiAgICAgICAgICAgIFJlc3RNZXRob2RzLkNsZWFyQWxsU3RhdGljVmFsdWVzKHR5cGVvZihBKSk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgdm9pZCBDbGVhckluc3RhbmNlKCkKICAgICAgICB7CiAgICAgICAgICAgIC8vaW5zdGFuY2UgbWVtYmVyCiAgICAgICAgICAgIFJlc3RNZXRob2RzLkNsZWFyQWxsU3RhdGljVmFsdWVzKEdldFR5cGUoKSk7CiAgICAgICAgfQogICAgfQp9Cg==