예제 #1
0
        public async Task IncrementCounter(Expression <Func <UsageModel, int> > counter)
        {
            var usage = await LoadUsage();

            var property     = (MemberExpression)counter.Body;
            var propertyInfo = (PropertyInfo)property.Member;
            var value        = (int)propertyInfo.GetValue(usage.Model);

            propertyInfo.SetValue(usage.Model, value + 1);
            await service.WriteLocalData(usage);
        }
예제 #2
0
        async Task UpdateUsageMetrics(PropertyInfo propertyInfo)
        {
            var data = await service.ReadLocalData();

            var usage = await GetCurrentReport(data);

            var value = (int)propertyInfo.GetValue(usage.Measures);

            propertyInfo.SetValue(usage.Measures, value + 1);

            await service.WriteLocalData(data);
        }
예제 #3
0
        public async Task IncrementCounter(Expression <Func <UsageModel, int> > counter)
        {
            var usage = await LoadUsage();

            // because Model is a struct, it needs to be boxed in order for reflection to work
            object model        = usage.Model;
            var    property     = (MemberExpression)counter.Body;
            var    propertyInfo = (PropertyInfo)property.Member;
            var    value        = (int)propertyInfo.GetValue(model);

            propertyInfo.SetValue(model, value + 1);
            usage.Model = (UsageModel)model;
            await service.WriteLocalData(usage);
        }
예제 #4
0
        public async Task IncrementCounter(Expression <Func <UsageModel.MeasuresModel, int> > counter)
        {
            await Initialize();

            var data = await service.ReadLocalData();

            var usage = await GetCurrentReport(data);

            var property     = (MemberExpression)counter.Body;
            var propertyInfo = (PropertyInfo)property.Member;

            log.Verbose("Increment counter {Name}", propertyInfo.Name);
            var value = (int)propertyInfo.GetValue(usage.Measures);

            propertyInfo.SetValue(usage.Measures, value + 1);
            await service.WriteLocalData(data);
        }