Exemplo n.º 1
0
 List<byte> GetAccessRights(GXDLMSObject item)
 {
     GXAttributeCollection attribs = new GXAttributeCollection();
     attribs.AddRange(item.Attributes);
     PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(item);
     foreach (PropertyDescriptor it in pdc)
     {
         GXDLMSAttribute att = it.Attributes[typeof(GXDLMSAttribute)] as GXDLMSAttribute;
         if (att != null && attribs.Find(att.Index) == null)
         {
             attribs.Add(att);
         }
     }
     List<byte> data = new List<byte>();
     data.Add((byte)DataType.Structure);
     data.Add(2);
     data.Add((byte)DataType.Array);
     data.Add((byte)attribs.Count);
     foreach (GXDLMSAttributeSettings att in attribs)
     {
         data.Add((byte)DataType.Structure); //attribute_access_item
         data.Add(3);
         GXCommon.SetData(data, DataType.Int8, att.Index);
         GXCommon.SetData(data, DataType.Enum, att.Access);
         GXCommon.SetData(data, DataType.None, 0);
     }
     data.Add((byte)DataType.Array);
     data.Add((byte)item.MethodAttributes.Count);            
     foreach (GXDLMSAttributeSettings it in item.MethodAttributes)
     {
         data.Add((byte)DataType.Structure); //attribute_access_item
         data.Add(2);
         GXCommon.SetData(data, DataType.Int8, it.Index);
         GXCommon.SetData(data, DataType.Enum, it.MethodAccess);
     }
     return data;
 }