public static T GetCatalogQuery <T>(this IResolveFieldContext context) where T : ICatalogQuery { var result = AbstractTypeFactory <T> .TryCreateInstance(); result.StoreId = context.GetArgumentOrValue <string>("storeId"); result.UserId = context.GetArgumentOrValue <string>("userId") ?? context.GetCurrentUserId(); result.CurrencyCode = context.GetArgumentOrValue <string>("currencyCode"); result.CultureName = context.GetArgumentOrValue <string>("cultureName"); return(result); }