public void BeforeInvoke(ICallInvocation invocation) { var operNames = operationNames; var providerNames = this.permissionProviderNames; IPermissionProvider permissionProvider; if (operNames.Length > 0) { for (int i = 0, len = operNames.Length; i < len; i++) { var operName = operNames[i]; var providerName = providerNames[i]; if (!invocation.TryGetValue <IPermissionProvider>(providerName, out permissionProvider)) { throw new PermissionException(operName, "not found <IPermissionProvider>, provider name: {0}".FormatArgs(providerName)); } if (!permissionProvider.HasPermission(operName)) { throw new PermissionInvalidOperationException(operName); } } } }
public static bool TryGetValue <T>(this ICallInvocation source, string name, out T value) { object o; if (source.TryGetValue(typeof(T), name, out o)) { value = (T)o; return(true); } value = default(T); return(false); }