コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="entityType"></param>
        /// <param name="attributeType"></param>
        /// <param name="inheritedAttributes"></param>
        /// <returns></returns>
        public static MemberInfo[] LoadAttributedMembers(Type entityType, Type attributeType, bool inheritedAttributes)
        {
            ReflectionDefinition definition;

            if (!_reflectionDefinitions.TryGetValue(entityType, out definition))
            {
                definition = new ReflectionDefinition(entityType);
                _reflectionDefinitions[entityType] = definition;
            }
#if DEBUG
            Console.WriteLine("Loading Members for {0}", entityType.FullName);
#endif
            if (definition.AttributedMembers.ContainsKey(attributeType))
            {
                return(definition.AttributedMembers[attributeType]);
            }
            else
            {
                var members = new List <MemberInfo>();
                foreach (var member in entityType.GetMembers())
                {
#if DEBUG
                    Console.WriteLine("\tMember: {0}", member.Name);
#endif
                    var attributes = member.GetCustomAttributes(attributeType, inheritedAttributes);
                    if (attributes != null && attributes.Length > 0)
                    {
                        members.Add(member);
                    }
#if DEBUG
                    foreach (var attribute in attributes)
                    {
                        Console.WriteLine("\t\tAttribute: {0}", attribute.GetType().FullName);
                    }
#endif
                }

                return(members.ToArray());
            }
        }
コード例 #2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="entityType"></param>
        /// <param name="attributeType"></param>
        /// <param name="inheritedAttributes"></param>
        /// <returns></returns>
        public static MemberInfo[] LoadAttributedMembers(Type entityType, Type attributeType, bool inheritedAttributes)
        {
            ReflectionDefinition definition;
            if (!_reflectionDefinitions.TryGetValue(entityType, out definition))
            {
                definition = new ReflectionDefinition(entityType);
                _reflectionDefinitions[entityType] = definition;
            }
            #if DEBUG
            Console.WriteLine("Loading Members for {0}", entityType.FullName);
            #endif
            if (definition.AttributedMembers.ContainsKey(attributeType))
            {
                return definition.AttributedMembers[attributeType];
            }
            else
            {
                var members = new List<MemberInfo>();
                foreach (var member in entityType.GetMembers())
                {
            #if DEBUG
                    Console.WriteLine("\tMember: {0}", member.Name);
            #endif
                    var attributes = member.GetCustomAttributes(attributeType, inheritedAttributes);
                    if (attributes != null && attributes.Length > 0)
                        members.Add(member);
            #if DEBUG
                    foreach (var attribute in attributes)
                    {
                        Console.WriteLine("\t\tAttribute: {0}", attribute.GetType().FullName);
                    }
            #endif
                }

                return members.ToArray();
            }
        }
コード例 #3
0
        protected internal RuntimeValue_Reflection(Engine eng, WireProtocol.Commands.Debugging_Value handle) : base(eng, handle)
        {
            m_rd = (ReflectionDefinition)System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(ReflectionDefinition));

            m_eng.CreateConverter().Deserialize(m_rd, handle.m_builtinValue);
        }
コード例 #4
0
        protected internal RuntimeValue_Reflection( Engine eng, WireProtocol.Commands.Debugging_Value handle ) : base( eng, handle )
        {
            m_rd = (ReflectionDefinition)System.Runtime.Serialization.FormatterServices.GetUninitializedObject( typeof(ReflectionDefinition) );

            m_eng.CreateConverter().Deserialize( m_rd, handle.m_builtinValue );
        }