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); } }
private static object ValueFor(MemberInfo memberInfo, ElementLocatorFactory locatorFactory) { return(ElementFactory.Create(TypeOf(memberInfo), locatorFactory.CreateLocator(memberInfo), memberInfo.IsDefined(typeof(CacheLookupAttribute), true))); }