internal static void AddXmlComment(Type type, PackageDescriptor.TypeDescriptor descriptor) { XmlNode xmlCommentNode = GetXmlCommentNode(type, "T:" + type.FullName.Replace("+", ".")); if ((xmlCommentNode != null) && string.IsNullOrEmpty(descriptor.Description)) { descriptor.Description = GetDescriptionText(xmlCommentNode.SelectSingleNode("summary").InnerXml); } }
private static List <ModbusDeviceDefinition> LoadModbusDevicesDefinitions() { if (PackageHost.ContainsSetting("ModbusDeviceDefinitions")) { // Read the JSON setting var modbusDevicesDefintions = PackageHost.GetSettingAsJsonObject <List <ModbusDeviceDefinition> >("ModbusDeviceDefinitions"); // For each definition foreach (ModbusDeviceDefinition definition in modbusDevicesDefintions) { // Create the StateObject type descriptor var soType = new PackageDescriptor.TypeDescriptor { TypeName = definition.Name, TypeFullname = $"Modbus.{definition.Name}", Description = definition.Description, Properties = definition.Properties.Select(p => new PackageDescriptor.MemberDescriptor { Name = p.Name, Description = p.Description, Type = PackageDescriptor.MemberDescriptor.MemberType.Property, TypeName = p.GetCLRType().FullName }).ToList() }; // And add it to the Package's descriptor PackageHost.WriteInfo($"Registering type {soType.TypeFullname} ..."); PackageHost.PackageDescriptor.StateObjectTypes.Add(soType); } // Declare the Package's descriptor on Constellation PackageHost.DeclarePackageDescriptor(); // Return the loaded definitions return(modbusDevicesDefintions); } else { return(null); } }