我正在尝试将一些JSON数据反序列化为应用程序的对象.到目前为止一切都很好,因为JSON数据上的属性是静态的(带有值的键).现在我得到的结果是密钥是一个动态的数据.
这是一个示例JSON url:
http://en.wikipedia.org/w/api.php?action=query&format=json&pageids=6695&prop=info
由此产生的JSON是:
{ "query" : { "pages" : { "6695" : { "counter" : "",
"lastrevid" : 468683764,
"length" : 8899,
"ns" : 0,
"pageid" : 6695,
"title" : "Citadel",
"touched" : "2012-01-03T19:16:16Z"
} } } }
Run Code Online (Sandbox Code Playgroud)
好的,这很好,除了我不能将"页面"数据反序列化为一个对象.如果我要为页面定义一个类,它必须如下所示:
public class 6695
{
public string counter { get; set; }
public int lastrevid { get; set; }
public int length { get; set; }
public int ns { get; set; }
public int pageid { get; set; } …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来初始化List类型的变量与一组值(在C#中).是的,有对象初始化但是需要为你想要的每个值一个新对象,我宁愿避免它.
这是一个示例:
class MyObject
{
public string Name {get;set;}
}
List<MyObject> OldNames = new List<MyObject>(10);
List<MyObject> NewNames = new List<MyObject>(5);
Run Code Online (Sandbox Code Playgroud)
这很好,但是OldNames包含对MyObject类型对象的10个空引用.
使用列表初始化程序,我可以这样做:
List<MyObject> OldNames = new List<MyObject>{
new MyObject(),
new MyObject(),
new MyObject(),
etc.
Run Code Online (Sandbox Code Playgroud)
这有点痛苦,因为我有许多列表变量和各种大小来初始化(例如,一个变量是26个对象的列表.是的,我可以编写一个函数或者扩展来为我做这个初始化(在我循环的地方)提供大小)但是这个代码我不一定要写.
我希望有一些lamdba或LINQ表达式或者用于将对象列表初始化为值而不是null的东西.
谢谢!
使用MVVM灯为我的视图模型构建WP7应用程序.我正在使用通过NuGet添加库时添加的ViewModelLocator.工作得很好,但现在我需要从代码中访问ViewModel.
在我的代码中,用户单击一个按钮,我需要搜索MainViewModel(包含多个视图模型),并根据用户输入的条件找到一个.
通常我只会响应按钮的Click事件,但我没有ViewModelLocator类的实例变量来获取MainViewModel来执行搜索.使用Windows Phone 7的默认模板(非MVVMLight),App类具有主视图模型的静态变量,因此您可以随时使用App.ViewModel访问它.
Twitter上有一些关于使用命令的讨论很好,但在某些时候我必须跨多个vms执行代码搜索以获得我需要的结果.可能需要将ISearchViewModel服务注入View或其他东西以使其工作.
这是提供的ViewModelLocator的实现:
public class ViewModelLocator
{
private static MainViewModel _main;
public ViewModelLocator()
{
_main = new MainViewModel();
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public MainViewModel Main
{
get
{
return _main;
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么从另一个视图的代码背后,你如何获得对Main的访问权限(MainViewModel包含所有数据列表并且有一个我调用的搜索方法)?或者你呢?
只是想知道人们如何解决这类问题?
谢谢.