Пример #1
0
        public void FauxTypeTest()
        {
            var testProp = new Dictionary <String, Type>()
            {
                { "test", typeof(bool) }
            };


            var propType = new PropretySpecType(testProp);

            var propMembers = propType.GetMemberNames();

            Expect(propMembers, Contains("test"));

            var realType    = new RealType(typeof(ISimpeleClassProps));
            var realMembers = realType.GetMemberNames();

            Expect(realMembers, Contains("Prop2"));



            var aggrType = new AggreType(propType, realType);

            var aggrMembers = aggrType.GetMemberNames();

            Expect(aggrMembers, Contains("Prop2"));
            Expect(aggrMembers, Contains("test"));
        }
Пример #2
0
        /// <summary>
        /// Method used to Initialize Proxy
        /// </summary>
        /// <param name="original"></param>
        /// <param name="interfaces"></param>
        /// <param name="informalInterface"></param>
        void IActLikeProxyInitialize.Initialize(dynamic original, IEnumerable <Type> interfaces, IDictionary <string, Type> informalInterface)
        {
            if (((object)original) == null)
            {
                throw new ArgumentNullException("original", "Can't proxy a Null value");
            }

            if (_init)
            {
                throw new MethodAccessException("Initialize should not be called twice!");
            }
            _init = true;
            ActLikeProxyOriginal = original;



            var dynamicObj = ActLikeProxyOriginal as IEquivalentType;

            if (dynamicObj != null)
            {
                if (interfaces != null)
                {
                    var aggreType = AggreType.MakeTypeAppendable(dynamicObj);

                    foreach (var type in interfaces)
                    {
                        aggreType.AddType(type);
                    }
                }
                if (informalInterface != null)
                {
                    var aggreType = AggreType.MakeTypeAppendable(dynamicObj);
                    aggreType.AddType(new PropretySpecType(informalInterface));
                }
            }
        }