通过特性赋值实例属性

该代码片段展示了如何在Cache中获取或添加值,并通过属性的特性来异步更新Cache的内容。使用GetOrAddAsync方法获取或创建Cache对象,然后遍历其属性,依据TyOpcNodeAttribute特性来判断并设置对应的值,如BValue和FValue。
摘要由CSDN通过智能技术生成

            // 找到当前修改的值所在的Cache
            var cache = await _cacheTest1.GetOrAddAsync(
                groupName, //缓存键
                () => Task.Run(() => new PlcOpcTest1())
            );

            // 更新Cache的值(通过特性中的Name)
            var propertis = cache.GetType().GetProperties();
            foreach (var propert in propertis)
            {
                // 获取属性的特性
                var oAttribute = propert.GetCustomAttribute<TyOpcNodeAttribute>();
                if (Identifier.Contains(oAttribute.Name))
                {
                    // 两种方案皆可行
                    // 方案1:直接set值
                    propert.SetValue(cache, value);

                    // 方案2:通过特性写入
                    switch (oAttribute.Name)
                    {
                        case "XXXXX":
                            cache.BValue = value.To<bool>();
                            break;
                        case "XXXXX":
                            cache.FValue = value.To<float>();
                            break;
                        default:
                            break;
                    }
                }
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值