2013-04-04 2 views
0

나는 클라이언트의 새로운 인스턴스를 생성에서 웹 사이트를 방지 할 수있는 방법이 개 프로젝트, 웹 사이트 및 프록시 라이브러리 (DLL)C#에서 특정 클래스에 대한 액세스를 제한하는 방법?

프록시 프로젝트가있다 ..

public class Client 
{ 
} 

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

을 가지고 있지만 그것을 만들 수 있습니다 프록시의 인스턴스, 여전히 GetClient를 실행합니까?

+0

당신이 모든 시간을 클라이언트 클래스의 하나 개의 인스턴스가 필요합니까? – ppetrov

답변

5

당신은 클라이언트를 변경할 수 있습니다 웹 사이트 프로젝트에도 클라이언트 클래스를 볼 수 없습니다

internal class Client 
{ 
} 

그런 식으로, 또는 당신은 할 수 :

public class Client 
{ 
    internal Client() 
    { 

    } 
} 

웹 사이트를 볼 수있는 방법을 상호 작용하지만 실제로 인스턴스를 구성하지는 않습니다. 당신은 클라이언트의 새 인스턴스를 만들 수 있기를 원하지 않는 경우

+0

그게 내가 찾고 있었고, 내부 생성자를 만드는 것에 대해 생각하지 않았다. – jaekie

+0

@csharpdev 걱정하지 마라. 이러한 종류의 간단한 솔루션은 때때로 모든 사람들을 피할 수있다! – Clint

+0

일반적으로 내부는 사용하지 않지만 팀에서 일하고있는 메신저 때문에 많은 사람들이 우리가 만든 클래스를 사용하지 않고 있습니다.) 이제 그들은 그것을 사용해야 할 것입니다! – jaekie

1

고려 중 클라이언트가 정적 만들거나

2
  1. 는 공용 인터페이스 IProxy 만들기 싱글 톤 패턴을 사용. 공개 된 모든 측면이 Proxy인지 확인하십시오.

  2. ProxyIProxy입니다.

  3. 제작 Proxyinternal (또는 개인용 및 중첩 클래스 인 경우 Client) (해당하는 경우).

1

당신은 싱글 톤 패턴을 사용하거나 클라이언트 클래스에 internal 생성자를 선언 할 수

관련 문제