// 找到当前修改的值所在的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;
}
}
}