Как выставить внутренние данные как только для чтения в классе? - PullRequest
0 голосов
/ 17 мая 2018

У меня есть класс с внутренней структурой, которая содержит данные, специфичные для этого класса.

Однако я хочу, чтобы другие классы могли читать данные как настройки только для чтения.

Итак, я попробовал:

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 находилась вне MyClass, поскольку она относится только к этому классу. Все остальное просто читает.

Как правильно это сделать?

1 Ответ

0 голосов
/ 17 мая 2018

Сделайте вашу структуру неизменной и передайте ее снаружи Как это:

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 извне, но это будет только для чтения. И ссылка, и поля доступны только для чтения. Хорошей практикой является сделать структуры неизменными в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...