2009-03-17 8 views
1

제네릭을 사용하기 위해 opur 코드를 재구성하고 있습니다. 위임자를 첨부/분리/반복/호출하기 위해 우리는 필요에 따라 (여기서는 변경이 불가능합니다) 자체 코드를 사용합니다.대리인의 대리인을 별칭/참조 할 수 있습니까?

나는 일반 클래스에이 대리자를 통과하고있어 순간
public delegate void Event_x_Delegate(ref ComParam pVal, out bool result); 

: 다음 BasicEvent와

public sealed class Event_X_Handling : BasicEvent<Event_X_Handling.Event_x_Delegate> 

public abstract class BasicEvent<DELEGATE> : Loggable 
    where DELEGATE: class { ... 
을 beeing는 클래스 X, Y, 자신을 선언 Z 있었다 전에

잘 작동하므로 첨부/분리 기능이 일반화되었습니다.

하지만 지금은 반복/호출도 일반화하고 싶습니다.

X와
public abstract class BasicEventListener<EVENTPARAM1> : 
    BasicEvent<BasicEventListener<EVENTPARAM1>.BasicDelegate<EVENTPARAM1>> { 

    #region TYPES 

    public delegate void BasicDelegate<PARAM1>(ref EVENTPARAM1 pVal, out bool result); 

    #endregion 

는, Y는 Z가 변경 :

public sealed class Event_X_Handling : BasicEventListener<ComParam> 

그러나 여기 숨어 문제를 오는이 좋은 작품처럼 X, Y로, Z는 단지 "심판 ComParam PVAL"뭔가 다르다 모서리에서 : 부착/분리 이제 BasicEventListener.BasicDelegate으로 작업하십시오. 그러나 많은 코드. 그들은Event_X_Handling.Event_x_Delegate을 참조합니다. 이는 불행히도 델리게이트를 작성하는 데 NET1.1 구문을 사용했기 때문입니다 (입력 된 이벤트 + = 새 Delegate_X (_listen)). 짧은 그래서

보기 : BasicDelegate Event_x_Delegate 별칭을하는 방법은 무엇입니까? 나는 다른 가능성을 실제로 볼 수 없다.

추신 : 당연히 기본 클래스를 반복 호출에서 동적 호출로 분해하면 BasicDelegate을 도입하지 않고 구현할 수 있음을 알 수 있습니다. 그러나 이것은 매우 우아한 IMHO가 아닙니다.

답변

1

아니요, typedef (내가 생각하는 것)이라고는 할 수 없습니다.

내가 말해야 할 것은 검색 교체가 여기에 친구가 될 수 있습니다!

11

Perahps a using 별칭이 유용할까요?

using System; 

using IntFunc = System.Func<int>; 

namespace DelegateAlias 
{ 
    class Program 
    { 
     static int foo() { return 314; } 
     static void Main(string[] args) 
     { 
     IntFunc f = foo; 
     } 
    } 
} 
관련 문제