属性在变量中列出两次,但在类中不列出

时间:2014-11-06 13:10:00

标签: c# visual-studio-2013

所以我有一个简单的类来表示数据库中的数据。

public class EntitySyncContext
{
    public EntitySyncContext()
    {
        ExternalEntities = new List<ExternalContact>();
    }
    public HandledType HandledType { get; set; }
    public Contact Entity { get; set; }
    public IList<ExternalContact> ExternalEntities { get; set; }
    public bool HasConflict { get; set; }
}

但是当我从这个类中声明一个变量时,当我在调试时对其进行监视时,我发现上面列出的所有属性在变量中都存在两次。

EntitySyncContext matchingContext = new EntitySyncContext();

Printscreen of properties

有谁知道这是怎么发生和/或为什么会发生这种情况和/或如何修复它?

3 个答案:

答案 0 :(得分:1)

我现在只安装了VIsual Studio 2015,所以行为可能会有所不同,但它让我想到了几件事。

请在此处查看此代码:

public interface IA
{
    string StringA { get; }
}

public interface IB
{
        string StringA { get; }
}

public class B
{
    public string StringA { get; }
}

public class A : B, IA, IB
{
    public string StringA
    {
        get
        {
            return "A";
        }
    }

    string IB.StringA
    {
        get
        {
            return "B";
        }
    }
}

以下是在Visual Studio 2015中观看A类实例的内容:

The watch window of a very weird class

所以我的想法是你明确地实现了具有相同属性的接口,或者你可以通过在子类中使用相同的名称声明属性来隐藏基类的属性,并且Visual Studio 2013要么不这样做。 t显示2015年的额外类型细节,或者您配置的方式与我不同。

答案 1 :(得分:0)

您可以修复或重新安装IDE。这似乎是一个IDE问题。

答案 2 :(得分:-2)

我说这是一个错误。

声明没有私有设置器的公共属性意味着私有setter背后的代码生成,很可能在IDE中被选中