public static UnitOfWorkAttribute GetUnitOfWorkAttributeOrNull(this IUnitOfWorkDefaultOptions unitOfWorkDefaultOptions, MethodInfo methodInfo) { var attrs = methodInfo.GetCustomAttributes(true).OfType <UnitOfWorkAttribute>().ToArray(); if (attrs.Length > 0) { return(attrs[0]); } attrs = methodInfo.DeclaringType.GetTypeInfo().GetCustomAttributes(true).OfType <UnitOfWorkAttribute>().ToArray(); if (attrs.Length > 0) { return(attrs[0]); } if (unitOfWorkDefaultOptions.IsConventionalUowClass(methodInfo.DeclaringType)) { return(new UnitOfWorkAttribute()); //Default } return(null); }
public static UnitOfWorkAttribute GetUnitOfWorkAttributeOrNull(this IUnitOfWorkDefaultOptions unitOfWorkDefaultOptions, MethodInfo methodInfo) { //方法上是否定义了UnitOfWorkAttribute,有则直接返回 var attrs = methodInfo.GetCustomAttributes(true).OfType <UnitOfWorkAttribute>().ToArray(); if (attrs.Length > 0) { return(attrs[0]); } //方法所属的类是否定义了UnitOfWorkAttribute,有则直接返回 attrs = methodInfo.DeclaringType.GetTypeInfo().GetCustomAttributes(true).OfType <UnitOfWorkAttribute>().ToArray(); if (attrs.Length > 0) { return(attrs[0]); } //用户是否通过配置给该类加上UnitOfWorkAttribute,有就返回一个实例 if (unitOfWorkDefaultOptions.IsConventionalUowClass(methodInfo.DeclaringType)) { return(new UnitOfWorkAttribute()); //Default } //表明该方法没有定义UnitOfWorkAttribute return(null); }