2013-09-30 5 views
0

C# .NET을 사용하여 작업하고 있으며 기본적으로 많은 영역이 포함 된 페이지가 있습니다.이 클래스를 만드는 방법 (인덱서 속성 포함)

bool result1 = MyClass.Section["area1"].Process(); 
bool result4 = MyClass.Section["area4"].Process(); 

내가 "Process"방법의 어떤 종류의 전화를 가질 수있을 것이다 클래스를 작성해야 내에서

코드는 숨김, 나는 기본적으로 뭔가를 할 수 있도록하려면 해당 메소드 내에 " area1"과 같은 매개 변수를 허용하십시오.

나를 시작하는 데 도움이되는 것이 있으면 매우 반가울 것입니다. 감사합니다.

+0

'처리'가있는 클래스가 있어야합니다. –

답변

1

일반적인 .NET 명명 규칙에 따라, 예를 들어 MyClass이 인스턴스가 아니라 정적으로 참조되는 것으로 가정합니다 (큰 변경이 아닐 수도 있음). 그 가정 감안할 때, 당신이 같은 클래스가 나타납니다 : 문자열을 받아 Process라는 이름의 메소드가 유형을 반환하는 인덱서 속성을 구현하는 모든 유형이 될 수있다이 경우

static class MyClass 
{ 
    public static IIndexer Section { get; } 
} 

IIndexer을 차례로 수익률 a bool. 우리는 간단한 IProcess 인터페이스 위의 ISomething 공백을 채울 수 있습니다

interface IIndexer 
{ 
    ISomething this[string] { get; } 
} 

다음으로 우리가 특정 구현에 대해 아무것도 알 필요가 없습니다 : 그래서

interface IProcess 
{ 
    bool Process(); 
} 

을 같이 IIndexer 이론적으로 볼 수 있었다 위의 인덱서는 다음과 같이 바뀔 수 있습니다 :

IProcess this[string] { get; } 

물론 위의 어떤 것도 실제 실행 코드가 없지만 당신이하고있는 일을하는 데 필요한 물건에 대해 설명합니다. 지금 당신은 당신의 성취 계약 호출 체인을 사용하여 코드를 실행 갈 때 아주 간단합니다 :

bool result1 = MyClass.Section["area1"].Process(); 
// MyClass.Section > IIndexer.this[string] > IProcess.Process 

아이디어를 POC하려면 IIndexer 구현을 조롱하는 좋은 방법은 당신을주지으로 Dictionary<string, IProcess>을 사용할 수 있습니다 귀하의 목적에 맞는 사용 가능한 인덱서.

+0

IProcess는 인터페이스이기 때문에 Process 메소드를 어디에서 구현할 수 있습니까? 별도의 수업을 만들어야합니까? 또한 "public static IIndexer Section"에 대한 getter의 return 문에 대해 무엇을 넣어야합니까? –

+0

1) 네, 수행하고자하는 실제 논리를 담고있는'IProcess' 구현체를 작성해야합니다. 2) 인덱서 속성이 포함 된 모든 유형을 반환합니다. 구현 내용을 자세히 이해하지 않으면 정확히 무엇인지 알기가 어려울 것입니다. –

+0

M.Babcock에 도움을 주셔서 감사합니다. 내 마지막 질문 .. 정적 클래스 "MyClass"가 그 메서드를 사용할 수 있기를 원하기 때문에 IProcess를 구현하기 위해 별도의 클래스를 작성하고 싶지 않습니다. 이 시나리오에서 Dictionary 를 활용하는 방법의 샘플을 보여 줄 수 있습니까? –

관련 문제