如何在类中以只读方式公开内部数据?

时间:2018-05-17 02:27:58

标签: c# scope access-modifiers

我有一个内部结构的类,其中包含特定于该类的数据。

但是我希望其他类能够将数据作为只读设置读取。

所以我试过了:

public class MyClass{
    private Data _data;
    public Data Data
    {
        get { return _data; } //expose the internal data as read only
    }

    internal struct Data
    {
        public int SomeData;
    }
}

这给了我错误:

 Inconsistent accessibility: property type

Data struct在MyClass之外没有多大意义,因为它只与该类有关。其他一切都只是读它。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

使您的结构不可变并将其提供给外部。像这样:

public class MyClass
{
    private Data _data;
    public Data DataToExpose
    {
        get { return _data; } //expose the internal data as read only
    }

    public struct Data
    {
        public Data(int someData)
        {
            this.SomeData = someData;
        }
        public int SomeData { get; }
    }
}

现在人们可以从外面使用Data,但它只是一个只读。引用和字段都是只读的。不管怎样,最好使结构不变。