0

我需要进行完整性检查以确定我的 C# 编译器是否损坏,或者我不了解自动属性应该如何工作。

给定以下类定义和构造函数,请注意各自的成员值。

public class MyClass
{
    public string MyString { get; set; }
    public string _anotherString;

    public MyClass()
    {
        MyString = "some value";
        // <--- debugger shows MyString as null

        _anotherString = "another value";
        // <--- debugger shows _anotherString as "another value"
    }
}

这种情况继续发生在各种课程中。简而言之,在构造函数中赋值时,所有自动属性都无法初始化。他们在其他地方工作。但是,如果我将它们更改为使用后备存储并初始化后备变量,它们就会被正确初始化。

我是否正确假设在构造函数中初始化自动属性总是安全的,或者我错过了什么?如果是,那么 Visual Studio 会发生什么?

4

2 回答 2

0

您是否尝试过一个全新的项目?您是否清理过解决方案(构建 > 清理解决方案),关闭所有打开的文档/选项卡,然后重新构建(不是构建,重新构建!)并重试?

于 2013-10-13T00:21:41.513 回答
-2

我确定这是由两个PostSharp方面属性之间的冲突引起的。PostSharp 没有问题,但我创建了一个自定义属性来拦截属性分配。删除额外的属性允许它正常工作。

本质上,当有多个方面应用于同一个对象时,PostSharp 在“编织”生成的代码时会做一些棘手的操作。仍在尝试确定如何解决它,但至少我不会完全发疯。

于 2013-10-13T01:23:53.423 回答