public T Get <T>(string name, T defaultValue) { var realType = ReflectionExtensions.GetValueTypeIfNullable(typeof(T)); string value = null; if (parameters.TryGetValue(name, out value)) { if (ReflectionExtensions.CanAssign(realType, typeof(Enum))) { return((T)Enum.Parse(realType, value, true)); } try { return((T)Convert.ChangeType(parameters[name], realType)); } catch (FormatException) { return(defaultValue); } } else { return(defaultValue); } }
public void CanAssignToAbstractClass() { ReflectionExtensions.CanAssign(typeof(MemoryStream), typeof(Stream)).Should().Be.True(); ReflectionExtensions.CanAssign(typeof(Stream), typeof(MemoryStream)).Should().Be.False(); }
public void CanAssignToInterface() { ReflectionExtensions.CanAssign(typeof(List <int>), typeof(IList <int>)).Should().Be.True(); ReflectionExtensions.CanAssign(typeof(List <string>), typeof(IList <int>)).Should().Be.False(); }