Мой код выдает ошибку, и я не могу исправить, каким образом я могу это решить или как я могу изменить его, чтобы он работал?

#c# #xml #deserialization

#c# #xml #десериализация

Вопрос:

Я получаю эту ошибку при запуске своего кода

 System.InvalidOperationException
  HResult=0x80131509
  Message=HamiltonXML.Program is inaccessible due to its protection 
level. Only public types can be processed.
  Source=System.Xmlenter code here
  StackTrace:
   at System.Xml.Serialization.TypeDesc.CheckSupported()
   at System.Xml.Serialization.TypeScope.GetTypeDesc(Type type,         
MemberInfo source, Boolean directReference, Boolean throwOnError)
   at System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, MemberInfo memberInfo, Boolean directReference)
   at System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError)
   at System.Xml.Serialization.ModelScope.GetTypeModel(Type type, Boolean directReference)
   at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace)
   at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
   at System.Xml.Serialization.XmlSerializer..ctor(Type type)
   at HamiltonXML.Program.Main(String[] args) in C:UsersAubesourcereposHamiltonProjectHamiltonProjectProgram.cs:line 18
  

Я изменил все классы на общедоступные и перепроверил весь код, но проблема все еще возникает. Вот код:

 using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace HamiltonXML
{
    class Program
    {
        static void Main(string[] args)
        {
        EnvironmentNodeConfigurationParameters encp = null;
        string path = "C:/Users/Aube/Desktop/FreezerEnvironmentNodeParameters_Freezer1.xml";

        XmlSerializer serializer = new XmlSerializer(typeof(EnvironmentNodeConfigurationParameters));

        StreamReader reader = new StreamReader(path);
        encp = (EnvironmentNodeConfigurationParameters)serializer.Deserialize(reader);
        reader.Close();
    }


    // NOTE: Generated code may require at least .NET Framework 4.5 or .NET Core/Standard 2.0.
    /// <remarks/>
    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class EnvironmentNodeConfigurationParameters
    {

        private EnvironmentNodeConfigurationParametersComplexNodeConfigurations[] complexDeviceParameterListField;

        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("ComplexNodeConfigurations", IsNullable = false)]
        public EnvironmentNodeConfigurationParametersComplexNodeConfigurations[] ComplexDeviceParameterList
        {
            get
            {
                return this.complexDeviceParameterListField;
            }
            set
            {
                this.complexDeviceParameterListField = value;
            }
        }
    }

    /// <remarks/>
    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class EnvironmentNodeConfigurationParametersComplexNodeConfigurations
    {

        private EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurations[] complexNodeParameterListField;

        private string subDeviceIDField;

        private string subDeviceNameField;

        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("NodeConfigurations", IsNullable = false)]
        public EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurations[] ComplexNodeParameterList
        {
            get
            {
                return this.complexNodeParameterListField;
            }
            set
            {
                this.complexNodeParameterListField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string SubDeviceID
        {
            get
            {
                return this.subDeviceIDField;
            }
            set
            {
                this.subDeviceIDField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string SubDeviceName
        {
            get
            {
                return this.subDeviceNameField;
            }
            set
            {
                this.subDeviceNameField = value;
            }
        }
    }

    /// <remarks/>
    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurations
    {

        private EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurationsEnvironmentLinkParams environmentLinkParamsField;

        private byte nodeIDField;

        private string nodeNameField;

        private string dependNodeNameField;

        private string registerTypeField;

        private byte startRegField;

        private byte numRegsField;

        private string nodeTypeField;

        private string valueTypeField;

        private string environmentLinkTypeField;

        private string guidField;

        private bool enabledField;

        private string unitsField;

        private bool monitoredField;

        private byte reportItemField;

        /// <remarks/>
        public EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurationsEnvironmentLinkParams EnvironmentLinkParams
        {
            get
            {
                return this.environmentLinkParamsField;
            }
            set
            {
                this.environmentLinkParamsField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public byte NodeID
        {
            get
            {
                return this.nodeIDField;
            }
            set
            {
                this.nodeIDField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string NodeName
        {
            get
            {
                return this.nodeNameField;
            }
            set
            {
                this.nodeNameField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string DependNodeName
        {
            get
            {
                return this.dependNodeNameField;
            }
            set
            {
                this.dependNodeNameField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string RegisterType
        {
            get
            {
                return this.registerTypeField;
            }
            set
            {
                this.registerTypeField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public byte StartReg
        {
            get
            {
                return this.startRegField;
            }
            set
            {
                this.startRegField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public byte NumRegs
        {
            get
            {
                return this.numRegsField;
            }
            set
            {
                this.numRegsField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string NodeType
        {
            get
            {
                return this.nodeTypeField;
            }
            set
            {
                this.nodeTypeField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string ValueType
        {
            get
            {
                return this.valueTypeField;
            }
            set
            {
                this.valueTypeField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string EnvironmentLinkType
        {
            get
            {
                return this.environmentLinkTypeField;
            }
            set
            {
                this.environmentLinkTypeField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Guid
        {
            get
            {
                return this.guidField;
            }
            set
            {
                this.guidField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public bool Enabled
        {
            get
            {
                return this.enabledField;
            }
            set
            {
                this.enabledField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Units
        {
            get
            {
                return this.unitsField;
            }
            set
            {
                this.unitsField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public bool Monitored
        {
            get
            {
                return this.monitoredField;
            }
            set
            {
                this.monitoredField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public byte ReportItem
        {
            get
            {
                return this.reportItemField;
            }
            set
            {
                this.reportItemField = value;
            }
        }
    }

    /// <remarks/>
    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurationsEnvironmentLinkParams
    {

        private EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurationsEnvironmentLinkParamsKeyValuePair keyValuePairField;

        /// <remarks/>
        public EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurationsEnvironmentLinkParamsKeyValuePair KeyValuePair
        {
            get
            {
                return this.keyValuePairField;
            }
            set
            {
                this.keyValuePairField = value;
            }
        }
    }

    /// <remarks/>
    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    public partial class EnvironmentNodeConfigurationParametersComplexNodeConfigurationsNodeConfigurationsEnvironmentLinkParamsKeyValuePair
    {

        private string keyField;

        private string valueField;

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Key
        {
            get
            {
                return this.keyField;
            }
            set
            {
                this.keyField = value;
            }
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Value
        {
            get
            {
                return this.valueField;
            }
            set
            {
                this.valueField = value;
            }
        }
    }



}

}
  

Предполагается, что код десериализует XML-файл.

Ответ №1:

Вы пробовали изменить свой программный класс на общедоступный?

 namespace HamiltonXML
{
    public class Program
    {

  

Комментарии:

1. Это исправляет это, спасибо, у вас есть какие-либо идеи о том, как сортировать объекты, которые возвращает эта функция

2. Мне нужно, чтобы программа десериализовала файл, отсортировала объекты в нем по идентификатору GUID, а затем повторно сериализовала его. У меня нет никаких знаний о том, как это сделать, есть ли у вас какие-либо подсказки о том, как я это сделаю

3. Вы можете сортировать, используя массив. Метод сортировки, например Array.Sort(encp.ComplexDeviceParameterList);

4. Вам нужно будет указать функцию сравнения, чтобы указать методу сортировки, по какому полю сортировать

5. Пожалуйста, не задавайте новый несвязанный вопрос в качестве комментария к ответу; и когда люди делают это, пожалуйста, не пытайтесь ответить на дополнительный вопрос в дальнейших комментариях. Новый вопрос должен появиться в новой теме.