private static object GetNewPropValue(ExpectUpdate attr, object obj, PropertyInfo prop)
        {
            var expectUpdateServices = new List <ExpectUpdateValueServiceBase>();

            expectUpdateServices.AddRange(ReflectionUtils.GetTypesFromAssembly <ExpectUpdateValueServiceBase>(typeof(ExpectUpdateValueServiceBase).Assembly)
                                          .Select(t => Activator.CreateInstance(t) as ExpectUpdateValueServiceBase));

            var targetServices = expectUpdateServices.FirstOrDefault(s => s.TargetType == attr.GetType());

            if (targetServices == null)
            {
                throw new SPMeta2NotImplementedException(string.Format("Can't find ExpectUpdateValueServiceBase impl for type: [{0}]", attr.GetType()));
            }

            return(targetServices.GetNewPropValue(attr, obj, prop));
        }
        private static object GetNewPropValue(ExpectUpdate attr, object obj, PropertyInfo prop)
        {
            var targetServices = ExpectUpdateServices.FirstOrDefault(s => s.TargetType == attr.GetType());

            if (targetServices == null)
            {
                throw new SPMeta2NotImplementedException(string.Format("Can't find ExpectUpdateValueServiceBase impl for type: [{0}]", attr.GetType()));
            }

            return(targetServices.GetNewPropValue(attr, obj, prop));
        }