2016-06-24 2 views
0

У меня есть свойство, например. который должен быть доступен через приложение для всех классов как свойство readonly, но администратор должен иметь возможность изменять его в любое время.в C#, что является лучшим способом иметь глобальную собственность, но может быть изменен только одним классом

Каков наилучший способ достичь этого в мире ООП?

Update Это приложение окна

по администратору Я имею в виду, пользователь приложения администратора

Update-2 основы @Scott Ханн ответ и @ комментарии Dr, я думаю, я должен добавить немного больше информации. Это автономное приложение и работает только на одной машине. И мне не интересно хранить информацию о БД или любых внешних ресурсах. Таким образом, пользователь пришел проверить информацию и пользователь выйти из системы. Вход администратора может вносить некоторые изменения, которые действительны до тех пор, пока приложение не будет закрыто.

Это именно то, как вы разработаете свою парадигму oop. например

public static class Current 
{ 
     public integer Rate 
     { 
      get; 
      private set; 
     } 
     ........... 
} 

public class Admin : User 
{ 
     public void ChangeRate() 
     { 
      ... 
     } 
} 

Ответ Fixed путем добавления частной статической переменной

+1

Какое приложение? Приложение Windows? Веб приложение? IoT? – Tinwor

+0

Что вы пробовали? Для StackOverflow требуется, по крайней мере, некоторая работа с вашей стороны. Они также имеют проблемы с «общими» вопросами. –

+0

Я предлагаю Static Class –

ответ

1

Я предполагаю, что вы хотите изменить это внутреннее свойство снаружи самого объекта?

Вы можете создать метод для изменения свойства (установка поля readonly) и только обеспечивает доступ к методу модификатора через object sender проверки (если вы хотите разрешить доступ с определенным типа класса) или установить «пароль» - понятная система для разрешения изменения свойства.

+0

Да, ваше предположение абсолютно верно. Я хочу изменить это внутреннее свойство вне самого объекта. Но я нашел, что ваш ответ недостаточно ясен. Не могли бы вы рассказать о ** объекте отправителя ** или «пароль» -еской системе? – MJK

+0

Yeap, проверил работу отправителя для проверки. – MJK

1

Похоже, вы описываете многопользовательское приложение Windows, в котором некоторые параметры контролируются администратором. Это указывает на то, что некоторые настройки не возникают в локальном приложении, но должны быть прочитаны из внешнего источника, который административный пользователь может изменить.

. Один из подходов заключается в использовании службы WCF или веб-API, который возвращает класс Settings (менее смутно названный.). Отдельные экземпляры приложений вызывают эту службу или API и извлекают класс со свойствами, указывающими, что включено или отключено, и другие настройки. (Или приложение может делать индивидуальные вызовы, чтобы увидеть, включены ли определенные функции или отключены.)

Тогда у вас есть метод этой службы или API, который ограничен административными пользователями, позволяющими им обновлять эти параметры.

Вы можете сохранить настройки в базе данных, к которой обращается эта служба. У вас может быть таблица, содержащая различные флаги. Для удобства я также просто сериализую класс, который определяет параметры как XML и хранит XML-документ в таблице. Это удобно, потому что это позволяет поддерживать историю этих настроек.

Независимо от этих настроек, вам необходимо убедиться, что они применяются во всем приложении. Например, у вас может быть параметр, указывающий, имеют ли пользователи, не являющиеся администратором, разрешение на обновление некоторой таблицы, а если оно отключено, вы скрываете эту функцию в своем приложении. Но вы не хотите, чтобы функции включения/отключения были вашей единственной линией безопасности. Если пользователь каким-то образом обойдет это и отправит запрос на обновление этой таблицы, вы все равно хотите его предотвратить, если этот параметр отключен.

Это немного расплывчато. Это зависит от того, как эти приложения взаимодействуют друг с другом и с любыми общими источниками данных, как распределяется приложение и насколько важна безопасность.

Смежные вопросы