using System;
using System.Reflection;
public class Test
{
public static void Main()
{
// your code goes here
var myType = new MyType();
Console.WriteLine("before");
Console.WriteLine(myType.one + " " + myType.two);
myType = SetAllFieldsAsDefault(myType) as MyType;
Console.WriteLine("after");
Console.WriteLine(myType.one + " " + myType.two);
}
class MyType {
internal double one = -1.1;
internal string test = "hi";
internal double two = 3.3;
}
private static object SetAllFieldsAsDefault(object _register)
{
Type register = _register.GetType();
var fields = register.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var field in fields)
{
if (field.FieldType != typeof(double)) continue;
field.SetValue(_register, 0);
}
return _register;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkJdmFyIG15VHlwZSA9IG5ldyBNeVR5cGUoKTsKCQlDb25zb2xlLldyaXRlTGluZSgiYmVmb3JlIik7CgkJQ29uc29sZS5Xcml0ZUxpbmUobXlUeXBlLm9uZSArICIgIiArIG15VHlwZS50d28pOwoJCW15VHlwZSA9IFNldEFsbEZpZWxkc0FzRGVmYXVsdChteVR5cGUpIGFzIE15VHlwZTsKCQlDb25zb2xlLldyaXRlTGluZSgiYWZ0ZXIiKTsKCQlDb25zb2xlLldyaXRlTGluZShteVR5cGUub25lICsgIiAiICsgbXlUeXBlLnR3byk7Cgl9CgogCgljbGFzcyBNeVR5cGUgewoJCWludGVybmFsIGRvdWJsZSBvbmUgPSAtMS4xOwoJCWludGVybmFsIHN0cmluZyB0ZXN0ID0gImhpIjsKCQlpbnRlcm5hbCBkb3VibGUgdHdvID0gMy4zOwoJfQogCgkJcHJpdmF0ZSBzdGF0aWMgb2JqZWN0IFNldEFsbEZpZWxkc0FzRGVmYXVsdChvYmplY3QgX3JlZ2lzdGVyKQp7CglUeXBlIHJlZ2lzdGVyID0gX3JlZ2lzdGVyLkdldFR5cGUoKTsKICAgIHZhciBmaWVsZHMgPSByZWdpc3Rlci5HZXRGaWVsZHMoQmluZGluZ0ZsYWdzLlB1YmxpYyB8IEJpbmRpbmdGbGFncy5Ob25QdWJsaWMgfCBCaW5kaW5nRmxhZ3MuSW5zdGFuY2UpOwogICAgZm9yZWFjaCAodmFyIGZpZWxkIGluIGZpZWxkcykKICAgIHsKICAgICAgICBpZiAoZmllbGQuRmllbGRUeXBlICE9IHR5cGVvZihkb3VibGUpKSBjb250aW51ZTsKICAgICAgICBmaWVsZC5TZXRWYWx1ZShfcmVnaXN0ZXIsIDApOwogICAgfQogICAgcmV0dXJuIF9yZWdpc3RlcjsKfQp9