To get the default value of a type, you’ve probably used the default keyword in .Net already:
1: var defaultInt = default(int); // 0
2: var defaultObj = default(string); // null
However, the use of the default keyword requires a type name to be specified at compile time, so you won’t be able to use it on a type which you discover at runtime. Instead, you will need to do something along the line of:
1: public object GetDefaultValue(Type type)
2: {
3: // Handle value types and reference types differently
4: if (type.IsValueType)
5: {
6: return Activator.CreateInstance(type);
7: }
8: else
9: {
10: return null;
11: }
12: }
It’ll yield the same result as using the default keyword:
1: var defaultInt = GetDefaultValue(typeof(int)); // 0
2: var defaultObj = GetDefaultValue(typeof(string)); // null