У меня есть класс, который выглядит, как показано ниже:Как заполнить общий список во время выполнения на C#?
public class GUIView
{
public GUIView()
{
Views = new List<View>();
}
public List<View> Views
{
get;
set;
}
public ViewMode ViewMode
{
get;
set;
}
public ViewStatus Status
{
get;
set;
}
}
public class View
{
public View()
{
DisplayFunctions = new List<DisplayFunction>();
}
public ChartType ViewType
{
get;
set;
}
public List<DisplayFunction> DisplayFunctions
{
get;
set;
}
}
public class DisplayFunction
{
public int Id
{
get;set;
}
public byte[] Color
{
get;
set;
}
public FunctionShape Shape
{
get;
set;
}
}
У меня есть XML-файл, из которого я заселение объектов во время выполнения. Я могу заполнить простые свойства, такие как int string и т. Д.
Но я не нахожу способ, как заполнить свойство, которое имеет тип List в моем примере, свойство «Просмотры», которое имеет тип List.
Даже я не могу найти тип этого имущества.
Просто я хочу инициализировать свойство во время выполнения, например.
Views = new List<View>();
, а затем создать экземпляр View
View v = new View();
, а затем заполнить вид объекта и, наконец, добавить его в список
Views.Add(view)
Вот мой XML-файл:
<?xml version="1.0" encoding="utf-8"?>
<Views>
<GUIView ViewMode="Single" Status="On">
<View ViewType="Lt">
<DisplayFunction Shape="Bar" Id="514" Color="122,222,123,133" />
</View>
<View ViewType="Lt">
<DisplayFunction Shape="Bar" Id="122" Color="122,222,123,133" />
</View>
</GUIView>
<GUIView ViewMode="Dual" Status="On">
<View ViewType="Lt">
<DisplayFunction Shape="Bar" Id="122" Color="122,222,123,133" />
</View>
<View ViewType="Lt">
<DisplayFunction Shape="Bar" Id="122" Color="122,222,123,133" />
</View>
</GUIView>
<GUIView ViewMode="Dual" Status="On">
<View ViewType="Lt">
<DisplayFunction Shape="Bar" Id="122" Color="122,222,123,133" />
</View>
<View ViewType="Lt">
<DisplayFunction Shape="Bar" Id="122" Color="122,222,123,133" />
</View>
</GUIView>
<GUIView ViewMode="Dual" Status="On">
<View ViewType="Lt">
<DisplayFunction Shape="Bar" Id="122" Color="122,222,123,133" />
</View>
<View ViewType="Lt">
<DisplayFunction Shape="Bar" Id="122" Color="122,222,123,133" />
</View>
</GUIView>
</Views>
Я написал способ для заполнения объекта, который работает для простых свойств, но мне нужна помощь в заполнении списка, вот мой метод:
public static XElement FromXml(this XElement xe, object obj)
{
if (xe != null && xe.HasAttributes)
{
foreach (XAttribute attribute in xe.Attributes())
{
try
{
PropertyInfo p = obj.GetType().GetProperty(attribute.Name.ToString());
if (p != null && p.CanWrite)
{
string s = attribute.Value;
if (s.Length > 0)
{
UpdateProperty(p, obj, s);
}
}
}
catch (Exception ex)
{
Log.Error("FromXml", ex);
}
}
}
return xe;
}
Любая идея, было бы здорово, как я пытался, но не смог найти решения до сих пор ,
Что вы попробовали? –
@ Praveen: так что здесь не работает? – Tigran