小编Bri*_*sen的帖子

使用JavaScriptSerializer()反序列化JSON文件

我将反序列化的json文件的结构如下所示;

{
    "id" : "1lad07",
    "text" : "test",
    "url" : "http:\/\/twitpic.com\/1lacuz",
    "width" : 220,
    "height" : 84,
    "size" : 8722,
    "type" : "png",
    "timestamp" : "Wed, 05 May 2010 16:11:48 +0000",
    "user" : {
        "id" : 12345,
        "screen_name" : "twitpicuser"
    }
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个类,其字段名称为JavaScriptSerializer的属性.我将用于反序列化json的代码如下:

            using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) {


                var responseBody = reader.ReadToEnd();
                var deserializer = new JavaScriptSerializer();
                var results = deserializer.Deserialize<Response>(responseBody);

            }
Run Code Online (Sandbox Code Playgroud)

我的问题是我如何读取json文件上的用户字段.这就像下面;

"user" : {
    "id" : 12345,
    "screen_name" : "twitpicuser"
}
Run Code Online (Sandbox Code Playgroud)

它有子属性和值.我怎样才能在我的Response类中命名它们.我的回复课现在看起来像这样;

public class Response { …
Run Code Online (Sandbox Code Playgroud)

c# json javascriptserializer deserialization

33
推荐指数
3
解决办法
12万
查看次数

为什么我不能做foreach(DataTable.Rows中的var Item)?

我有什么理由不能做到以下几点:

foreach (var Item in DataTable.Rows) {
Run Code Online (Sandbox Code Playgroud)

而不是必须这样做

foreach (DataRow Item in DataTable.Rows) {
Run Code Online (Sandbox Code Playgroud)

我原以为这是可能的,就像在其他数据类型上一样.例如:

foreach (var Employee in Staff) { // string[] Staff etc...
Run Code Online (Sandbox Code Playgroud)

当我尝试第一个foreach循环时,我得到错误CS0021:无法将带有[]的索引应用于'object'类型的表达式.

为什么编译器不能确定.Rows返回DataRows的集合?

.net c# datatable foreach datarow

28
推荐指数
2
解决办法
1万
查看次数

使用指定的用户名和密码运行mstsc.exe

我意识到在Windows 7中,无法为同一主机保存不同的凭据,但我需要一些解决方法.

我可以在代码中手动提供用户名和密码吗?将它们存储在临时.rdp文件中?

c# rdp

27
推荐指数
3
解决办法
9万
查看次数

设计模式:生成器

我已经找到了一个很好Builder模式示例(在C#中),但找不到一个,因为我不了解Builder模式或者我正在尝试做一些从未打算过的事情.例如,如果我有一个抽象的汽车和抽象的构建方法来创建汽车零件,我应该能够将我所有的30个选择发送给Director,让它构建我需要的部件,然后构建我的汽车.无论生产哪种汽车,卡车,半卡车等,我都应该能够以完全相同的方式"驾驶"它.

第一个问题是大多数示例硬编码属性值到具体部分,我认为应该来自数据库.我认为这个想法是将我的选择发送给Director(来自数据源),并让构建器根据我的数据创建自定义产品.

第二个问题是我希望构建器方法实际创建部件然后将它们分配给产品,而不是传递字符串,而是真正的强类型产品部件.

例如,我想通过为我创建一个Builder制作表单字段来动态创建表单,包括标签,输入部分,验证等.这样我可以从我的ORM中读取对象,检查对象的元数据,将其传递给我的Builder并将新创建的用户控件结果添加到我的Web表单中.

但是,我找到的每个Builder示例都只有硬编码数据,而不是将选择从主代码传递到Builder并开始定制产品.一切似乎都是一个很大的静态案例陈述.例如,如果我有三个参数,每个参数有10个选项,我不想构建30个具体的Builder方法,我想创建的只是足以制作我的产品所需的属性,可能只有三个.

我很想让Director只存在于主代码中.应该有一种方法可以自动确定调用哪个具体的构建器方法,类似于多态和方法重载(尽管这是一个非常糟糕的例子),而不是在模式中使用case语句.(每次我需要添加新的产品类型时,我都需要修改现有的Director,这很糟糕).

c# design-patterns builder interface-builder

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

你有编码标准吗?如果是这样,他们是如何执行的?

我参与了几个项目,我们花了很多时间讨论和编写精细的编码标准,涵盖从语法布局到实际最佳实践的所有内容.但是,我也发现这些很少被完全遵循.许多开发人员似乎毫不犹豫地拒绝仅基于编码标准违规的代码审查.即违规将定期提交到存储库.

我的问题是:你有编码标准吗?它们涵盖了什么?他们是否跟着每个人?你做了什么(如果有的话)以确保每个人都遵守标准?

我知道,有一个类似的问题在这里,但我担心的是没有那么多你怎么能做到这一点,但你实际上是如何去了解它,什么是预期收益?

coding-style

21
推荐指数
1
解决办法
1527
查看次数

使用C#将xml转换为字符串

我有如下功能

public string GetXMLAsString(XmlDocument myxml)
    {
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(myxml);

        StringWriter sw = new StringWriter();
        XmlTextWriter tx = new XmlTextWriter(sw);
        doc.WriteTo(tx);

        string str = sw.ToString();// 
        return str;
    }
Run Code Online (Sandbox Code Playgroud)

我正在从另一个方法将xml传递给此方法.但是doc.loadxml(),系统期望一个字符串,因为我传递了一个xml,它会抛出error.Pls帮助.提前致谢..

c# xml

21
推荐指数
2
解决办法
13万
查看次数

将List <List <T >>转换为C#中的List <T>

我有一个List<List<int>>.我想将它转换为List<int>每个int都是唯一的.我想知道是否有人使用LINQ有一个优雅的解决方案.

我希望能够使用Union方法,但每次都会创建一个新的List <>.所以我想避免做这样的事情:

List<int> allInts = new List<int>();

foreach(List<int> list in listOfLists)
   allInts = new List<int>(allInts.Union(list));
Run Code Online (Sandbox Code Playgroud)

有什么建议?

谢谢!

c# linq generics union list

19
推荐指数
3
解决办法
1万
查看次数

C#的并行编程模式?

随着英特尔为台式机推出Hexa-Core(6)处理器,看起来我们已经不能再等待微软让多核编程"轻松"了.我刚刚订购了Joe Duffy的书"Concurrent Programming on Windows".这看起来是一个很好的起点,但是,我希望你们中有些人一直瞄准多个/多个核心系统会给我一些好的资源,这些资源已经或者对你的项目有所帮助?


你已经给出了一些很好的答案,但是,让我加上"好资源"的意思.仅仅因为我们有6,12或48个核心并不意味着我们的应用程序将从尝试使用它们中受益.我一直听说当我们的系统中有大量内核时,当前的编程范式将会发生变化.

我应该阅读哪些博客/书籍以最好地理解模式以及何时使用它们.是否有任何好的播客或网络广播可以提供帮助.


以下是我发现的一些有趣的链接:

一般有用:

多线程:

.net c# parallel-processing multithreading design-patterns

19
推荐指数
3
解决办法
4824
查看次数

我如何说服我的同事不要在所有事情上实施IDisposable?

我正在开发一个项目,其中有大量的对象由一些类实例化,这些类在应用程序的生命周期内保留在内存中.每次不时抛出OutOfMemoryExceptions都会导致大量内存泄漏.似乎在实例化的对象之前超出范围之后,它们不会被垃圾收集.

我已经将问题分离为主要关于附加到永远不会分离的长生命对象的事件处理程序,从而导致长生命对象仍然具有对超出范围对象的引用,然后永远不会垃圾收集.

我的同事提出的解决方案如下:在所有类,全面和Dispose方法中实现IDisposable,使对象中的所有引用为null,并从您附加到的所有事件中分离.

我相信这是一个非常糟糕的主意.首先是因为它"过度杀戮",因为问题可以通过修复一些问题区域来解决,其次因为IDisposable的目的是释放对象控制的任何非托管资源,而不是因为你不信任垃圾收集器.到目前为止,我的论点都被置若罔闻.我怎么能说服他们这是徒劳的?

.net c# memory-management idisposable

18
推荐指数
4
解决办法
3532
查看次数

两个具有相同内容的字符串是否会存储在同一个内存位置?

这是我在采访中得到的一个问题.

我有两个字符串定义为

String s1="Java";
String s2="Java";
Run Code Online (Sandbox Code Playgroud)

我的问题是这两个引用是否指向相同的内存位置.通常,当我们创建相同的字符串(没有new关键字)时,内容是否只存储在内存中一次,所有具有相同内容的String对象只是引用相同的位置,而不是冗余地存储字符串"Java"?s1和s2的哈希码是相同的.但是哈希码是否直接依赖于对象的内存位置?

java string memory-management

18
推荐指数
3
解决办法
1万
查看次数