2013-04-04 3 views
0

У меня есть 2 проектов, веб-сайт и прокси-библиотеки (DLL)Как ограничить доступ к определенным классам в C#?

Proxy Проект имеет ..

public class Client 
{ 
} 

public class Proxy 
{ 
    public Client GetClient() 
    { 
     return new Client(); 
    } 
} 

Как я могу предотвратить сайт от создания нового экземпляра клиента, но позволяют ему создавать экземпляр прокси, и все еще запустить GetClient?

+0

вам нужно иметь только один экземпляр класса Client все время? – ppetrov

ответ

5

Вы можете изменить Клиенту:

internal class Client 
{ 
} 

Таким образом, веб-сайт проекта не может даже увидеть класс клиента, или вы могли бы сделать:

public class Client 
{ 
    internal Client() 
    { 

    } 
} 

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

+0

Это то, что я искал, не думал о том, чтобы внутренние конструкторы – jaekie

+0

@csharpdev Не стоит беспокоиться, эти простые решения время от времени убегают! – Clint

+0

обычно я никогда не пользуюсь внутренним, но поскольку я работаю в команде, многие люди не используют классы, которые мы создали для них;) .. теперь им придется использовать его! – jaekie

1

Если вы не хотите, чтобы быть в состоянии создать новый экземпляр Клиента, рассмотреть либо сделать клиент статическим или с использованием шаблона Singleton

2
  1. Создать общедоступный интерфейс IProxy. Убедитесь, что у него есть все аспекты Proxy, которые вы хотите публично открыть.

  2. Иметь Proxy реализовать IProxy.

  3. Сделайте Proxyinternal (или даже закрытый, и вложенный класс Client, если применимо).

1

Вы можете использовать шаблон одноэлементный, или объявить internal конструктор в классе Client

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