对于模糊的标题感到抱歉。我的问题如下:
我有一系列的类(classA,classB,classC ......),每个类都有一个列表。我希望能够让用户在这些列表中导入,导出,添加和删除。
我试图解决这个问题的方法是:
我显然无法将列表转换为列表,因为我不允许将classB的对象添加到classA列表中,即使它们都在实现接口。
我考虑过创建一个自定义的listClass并尝试以这种方式处理转换,但它看起来很混乱。
处理此问题的最佳方法是什么?我不想单独处理每个班级,因为实际上会有+20个班级。
由于请求了代码段,这是我的全局类。
public static class globalClass
{
public static List<classA> characterList = new List<classA>();
public static List<classB> raceList = new List<classB>();
public static List<classC> deityList = new List<classC>();
}
我用于列表的一个自定义类
public class classA: IInterface
{
public string getDisplayName()
{
return name;
}
//general info
public String name;
}
我如何保存列表
private async Task saveItem<T>(List<T> list, string p)
{
var serializer = new DataContractJsonSerializer(list.GetType());
//changed "LocalFolder" to "RoamingFolder"
using (var stream = await ApplicationData.Current.RoamingFolder.OpenStreamForWriteAsync(
p,
CreationCollisionOption.ReplaceExisting))
{
serializer.WriteObject(stream, list);
}
System.Diagnostics.Debug.WriteLine("done writing!");
}
我如何获取FieldInfo并将其传递到我的应用程序的下一页。
TypeInfo typeInfo = IntrospectionExtensions.GetTypeInfo(typeof(globalClass));
IEnumerable<FieldInfo> FieldInfoList = typeInfo.DeclaredFields;
foreach (FieldInfo f in FieldInfoList)
{
Button deleteButton = new Button();
deleteButton.Click += delegate(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(deleteObjectFromLibraryPage), f);
};
}
以及我是如何从我发送的fieldinfo获取实际列表的。
private List<IDisplayable> list;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
FieldInfo f = (FieldInfo)e.Parameter;
String s = f.GetValue(null).ToString();
TypeInfo typeInfo = IntrospectionExtensions.GetTypeInfo(typeof(globalClass));
IEnumerable<FieldInfo> FieldInfoList = typeInfo.DeclaredFields;
var v = FieldInfoList.Where(c => c.GetType().Equals(f.GetType()));
this.list = globalClass.getList(f);
}
上面代码的最后一行是我陷入困境的地方,并想找出解决这个问题的标准方法。