コード例 #1
0
        public static void Activate(object target, ISearchContext context)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var locatorFactory = new ElementLocatorFactory(context);

            var members = target.GetType().LocatableMembers();

            foreach (var field in members.OfType <FieldInfo>().Where(f => f.GetValue(target) == null))
            {
                field.SetValue(target, ValueFor(field, locatorFactory));
            }

            foreach (var property in members.OfType <PropertyInfo>().Where(p => p.GetValue(target, null) == null))
            {
                property.SetValue(target, ValueFor(property, locatorFactory), null);
            }
        }
コード例 #2
0
 private static object ValueFor(MemberInfo memberInfo, ElementLocatorFactory locatorFactory)
 {
     return(ElementFactory.Create(TypeOf(memberInfo), locatorFactory.CreateLocator(memberInfo),
                                  memberInfo.IsDefined(typeof(CacheLookupAttribute), true)));
 }