Tag: object initializers

为什么这个嵌套对象初始值设定项抛出空引用exception?

以下测试用例在尝试将Id分配给null的对象时抛出空引用exception,因为代码在对象初始值设定项之前缺少“new R”。 为什么这不会被编译器捕获? 为什么允许这样,用例会是一个有意义的构造? [TestClass] public class ThrowAway { public class H { public int Id { get; set; } } public class R { public H Header { get; set; } } [TestMethod] public void ThrowsException() { var request = new R { Header = { Id = 1 }, }; } }

C#Object Initializer:从另一个设置属性

我有以下对象,在我的构造函数中,我添加了一个新的Guid作为Id。 public class MyObject { public MyObject() { Id = Guid.NewGuid().ToString(); } public String Id { get; set; } public String Test { get; set; } } 我想在对象初始化器中做类似的事情: var obj = new MyObject { Test = Id; // Get new GUID created in constructor } 可能吗?

F#中的C#对象初始化语法

请注意:这个问题与这个问题不一样。 我最近遇到了一些我之前没有遇到过的C#语法: 有没有办法在F#中做到这一点? class Two { public string Test { get; set; } } class One { public One() { TwoProperty = new Two(); } public Two TwoProperty { get; private set; } } var test = new One(){ TwoProperty = { Test = “Test String” }}; (注意当setter是私有时初始化器中的TwoProperty的初始化 – 它在存储在TwoProperty的对象上设置属性,但TwoProperty属性中存储新的Two实例) 编辑:我最近在monotouch的构造函数中遇到了一些C#代码,如下所示: nameLabel = new UILabel […]

对象初始化程序和动态指定属性

使用对象初始化程序,是否可以选择包含属性设置? 例如: Request request = new Request { Property1 = something1, if(something) Property2 = someting2, Property3 = something3 };

你能从.NET中的JSON实例化一个对象实例吗?

由于Object Initializers与JSON非常相似,现在.NET中有匿名类型。 能够获取字符串(例如JSON)并创建表示JSON字符串的匿名对象会很酷。 使用对象初始值设定项创建匿名类型: var person = new { FirstName = “Chris”, LastName = “Johnson” }; 如果您可以传入Object Initializer代码的字符串表示(最好是类似JSON)来创建具有该数据的匿名类型的实例,那将是非常棒的。 我不知道是否可能,因为C#不是动态的,并且编译器实际上将Object Initializer和Anonymous Type转换为可以运行的强类型代码。 本文将对此进行说明。 也许使用JSON并使用它创建键/值Dictionary的function将最有效。 我知道你可以在.NET中将一个对象序列化/反序列化为JSON,但我想要的是一种创建一个基本上松散类型的对象的方法,类似于JavaScript的工作方式。 有谁知道在.NET中这样做的最佳解决方案? 更新:太清楚我为什么要问这个问题的背景……我在考虑C#如何在语言层面(可能)更好地支持JSON,而我正试图想办法今天可以做到的概念原因。 所以,我想我会把它发布在这里开始讨论。