示例#1
0
        /// <summary>
        /// Returns an instance of the type, optionally through the container if it is supported.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="resolver"></param>
        /// <returns></returns>
        protected static object CreateInstance(IType type, IDependencyResolver resolver)
        {
            var typeForResolver = type as IResolverAwareType;

            return(resolver == null || typeForResolver == null
        ? type.CreateInstance()
        : typeForResolver.CreateInstance(resolver));
        }
示例#2
0
        public void Cannot_cast_to_a_real_type()
        {
            IType testing = BuildRoutine.VirtualType().FromBasic()
                            .DefaultInstanceId.Set("Id")
                            .Name.Set("Virtual")
                            .Namespace.Set("Routine")
            ;

            Assert.Throws <InvalidCastException>(() => testing.Cast(testing.CreateInstance(), type.of <string>()));
        }
示例#3
0
        public void Creates_virtual_object()
        {
            IType testing = BuildRoutine.VirtualType().FromBasic()
                            .DefaultInstanceId.Set("default")
            ;

            var actual = testing.CreateInstance();

            Assert.IsInstanceOf <VirtualObject>(actual);
            Assert.AreEqual("default", ((VirtualObject)actual).Id);
        }
示例#4
0
        public void Casts_a_virtual_object_to_object()
        {
            IType testing = BuildRoutine.VirtualType().FromBasic()
                            .DefaultInstanceId.Set("Id")
                            .Name.Set("Virtual")
                            .Namespace.Set("Routine")
            ;

            var instance = testing.CreateInstance();

            Assert.AreSame(instance, testing.Cast(instance, type.of <object>()));
        }
示例#5
0
        public void By_default__to_string_returns_Id_and_virtual_type_name()
        {
            IType testing = BuildRoutine.VirtualType().FromBasic()
                            .DefaultInstanceId.Set("default")
                            .Namespace.Set("Namespace")
                            .Name.Set("Name")
            ;

            var actual = testing.CreateInstance();

            Assert.AreEqual("default (Namespace.Name)", actual.ToString());
        }
示例#6
0
        public void Cannot_cast_to_a_virtual_type_that_is_not_in_assignable_types()
        {
            var virtualInterface = BuildRoutine.VirtualType().FromBasic()
                                   .Name.Set("IVirtual")
                                   .Namespace.Set("Routine")
                                   .IsInterface.Set(true);

            IType testing = BuildRoutine.VirtualType().FromBasic()
                            .DefaultInstanceId.Set("Id")
                            .Name.Set("Virtual")
                            .Namespace.Set("Routine")
            ;

            Assert.Throws <InvalidCastException>(() => testing.Cast(testing.CreateInstance(), virtualInterface));
        }
示例#7
0
        public void Casts_a_virtual_object_to_its_assignable_type()
        {
            var virtualInterface = BuildRoutine.VirtualType().FromBasic()
                                   .Name.Set("IVirtual")
                                   .Namespace.Set("Routine")
                                   .IsInterface.Set(true);

            IType testing = BuildRoutine.VirtualType().FromBasic()
                            .DefaultInstanceId.Set("Id")
                            .Name.Set("Virtual")
                            .Namespace.Set("Routine")
                            .AssignableTypes.Add(virtualInterface)
            ;

            var instance = testing.CreateInstance();

            Assert.AreSame(instance, testing.Cast(instance, virtualInterface));
        }
示例#8
0
        }         // Find

        public bool CreateValue(string sName, bool bIsNullable, string sValue, string sHint, out object oResult)
        {
            IType oType = Find(sName, bIsNullable, sHint);

            if (oType == null)
            {
                oResult = null;
                return(false);
            }             // if

            try {
                oResult = oType.CreateInstance(sValue);
                return(true);
            }
            catch (Exception e) {
                m_oLog.Alert(e, "Failed to create a value from name '{0}', is nullable {1}, hint '{2}', data '{3}'.", sName, bIsNullable, sHint, sValue);
            }             // try

            oResult = null;
            return(false);
        }         // CreateValue
示例#9
0
 /// <summary>
 /// Returns an instance of the type, optionally through the container if it is supported.
 /// </summary>
 /// <param name="type"></param>
 /// <param name="resolver"></param>
 /// <returns></returns>
 protected static object CreateInstance(IType type, IDependencyResolver resolver)
 {
     return(resolver == null || !(type is IResolverAwareType typeForResolver)
 ? type.CreateInstance()
 : typeForResolver.CreateInstance(resolver));
 }
示例#10
0
 public object CreateInstance()
 {
     return(_wrappedType.CreateInstance());
 }
示例#11
0
 public object ReadFrom(IHttpEntity request, IType type, string paramName)
 {
     return(type.CreateInstance());
 }
示例#12
0
 public object ReadFrom(IHttpEntity request, IType type, string paramName) { return type.CreateInstance(); }