2009-11-07 8 views
1

다음과 같은 방법으로 콘솔에 행을 인쇄합니다. 메소드 속성을 사용하여 중복 코드 제거

public void MyMethod() { 
    try { 
     Console.WriteLine("Hello!"); 
     Console.WriteLine("My name is MyMethod"); 
    } 
    finally { 
     Console.WriteLine("Bye."); 
    } 
} 

나는 이러한 방법 중 몇 가지를 가지고 그들은 모두 같은 일을 (시도 즉, { "안녕하세요"; 뭔가;} 마지막으로 { "안녕."}). 중복을 방지하고 내 코드를 명확하게하기 위해, 나는 다음과 같은 내놓았다 :

public void SayHello(Action myName) { 
    try { 
     Console.WriteLine("Hello!"); 
     myName(); 
    } 
    finally { 
     Console.WriteLine("Bye."); 
    } 
} 

public void MyMethod2() { 
    SayHello(() => Console.WriteLine("My name is MyMethod")); 
} 

나는이 기술을 좋아하지만, 나는 그것이 속성을 사용하여 더 나은 될 수있다 생각합니다. 여기에 내가 궁극적으로 달성하고자하는 것입니다 :

[SayHello] 
public void MyMethod2() { 
    Console.WriteLine("My name is MyMethod"); 
} 

단순히 나에게 중복을 제거하는 데 도움이되는 방법 속성을 추가 할 수 있다면 그것은 좋은 것은 (시도 즉, { "안녕하세요"; 뭔가;} 마지막으로 { "안녕. "}). C#에서 이러한 속성을 만들 수 있습니까?

+0

회원님이 달성하기 위해 노력하고 정말로 확실 "CompileTimeAttribute 컴파일 타임에 코드를 삽입하는 방법"을 참조하십시오. 속성은 코드를 장식하고, 생성하지 않으며, 그렇지 않으면 코드가하는 일이 실제로 명확하지 않습니다. 나는 단순히 서브 클래 싱을 시도 할 것이다. – Wilhelm

+0

당신이 찾고있는 기능을 제공하면서 코드의 목표를 꽤 분명하게 표현하고있는 반면, 속성을 사용하여 작성하는 것은 혼란 스럽다. – qid

답변