コード例 #1
0
        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);
            }
        }
コード例 #2
0
 public void CanAssignToAbstractClass()
 {
     ReflectionExtensions.CanAssign(typeof(MemoryStream), typeof(Stream)).Should().Be.True();
     ReflectionExtensions.CanAssign(typeof(Stream), typeof(MemoryStream)).Should().Be.False();
 }
コード例 #3
0
 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();
 }