Локальная переменная для свойства класса - PullRequest
0 голосов
/ 25 июня 2019

Я создал список, используя linq.К сожалению, я хочу иметь это как свойство класса.Как я могу преобразовать его в доступное свойство класса?

public class Component {

    // Property of class Component
    public string Komponentenart { get; set;}
    public int KomponentenID { get; set;}
    public string KomponentenArtikelnummer { get; set;}
    public var Variablen { get; set; }
}

public Component(string _filename)
{
    string componentFile = _filename;
try
        {
            StreamReader reader = new StreamReader(componentFile, Encoding.UTF8);
            XDocument xmlDoc = XDocument.Load(reader);


            var variablen = (from element in xmlDoc.Descendants("variable")
                             select new
                             {
                                 Variable = (string)element.Attribute("ID"),
                                 Index = (string)element.Attribute("index"),
                                 Name = (string)element.Attribute("name"),
                                 Path = (string)element.Attribute("path"),
                                 Interval = (string)element.Attribute("interval"),
                                 ConnectorId = (string)element.Attribute("connectorId"),
                                 Type = (string)element.Attribute("type"),
                                 Factor = (string)element.Attribute("factor"),
                                 MaxValue = (string)element.Attribute("maxvalue")
                             }
                ).ToList();
}

1 Ответ

0 голосов
/ 26 июня 2019

Вы не можете возвращать экземпляры анонимных типов в качестве возвращаемого значения функций или свойств (из моей последней информации. Быстрый поиск в Google не дал никаких признаков того, что это изменилось до сих пор).Это означает, что вы не можете составить список анонимного типа, который вы создаете с помощью new {VariableName1 = "123", VarName2 = "456"}.Вы можете определить класс или структуру, в которой есть необходимые члены, такие как переменная, индекс, имя, путь.Затем, когда вы строите свой список, вместо создания oject с new {...}, вы создаете один из именованного типа, то есть:

Определите это где-нибудь:

class MyBunchOfVariables
{
public string Variable  ;
public string Index         ;
public string Name      ;
public string Path      ;
public string Interval  ;
public string ConnectorId ;
public string Type      ;
public string Factor        ;
public string MaxValue  ;
}

Измените тип свойствасоответственно:

public class Component
{
// Property of class Component
public string Komponentenart { get; set;}
public int KomponentenID { get; set;}
public string KomponentenArtikelnummer { get; set;}
public MyBunchOfVariables Variablen { get; set}; // ### CHANGED TYPE ###
}

А затем:

var variablen = (from element in xmlDoc.Descendants("variable")
             select
            new MyBunchOfVariables
                {
                 Variable       = (string)element.Attribute("ID"),
                 Index      = (string)element.Attribute("index"),
                 Name       = (string)element.Attribute("name"),
                 Path       = (string)element.Attribute("path"),
                 Interval       = (string)element.Attribute("interval"),
                 ConnectorId        = (string)element.Attribute("connectorId"),
                 Type       = (string)element.Attribute("type"),
                 Factor         = (string)element.Attribute("factor"),
                 MaxValue       = (string)element.Attribute("maxvalue")
                }
                ).ToList();
...