小编Bil*_*ser的帖子

使用带动态数据的JSon.NET反序列化JSON

我正在尝试将一些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)

json json.net windows-phone-7 deserialization

17
推荐指数
2
解决办法
3万
查看次数

使用非空值初始化List <T>

我正在寻找一种方法来初始化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的东西.

谢谢!

c# list

7
推荐指数
1
解决办法
3300
查看次数

如何从代码隐藏中访问ViewModelLocator中的MainViewModel?

使用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包含所有数据列表并且有一个我调用的搜索方法)?或者你呢?

只是想知道人们如何解决这类问题?

谢谢.

windows-phone-7 mvvm-light

4
推荐指数
1
解决办法
4371
查看次数