2009-02-05 6 views
0

경로가 특정 필요 또는 패턴과 일치하면 코드의 특정 부분을 실행하려고합니다. 다른 플러그인에서 몇 가지 경로를 가져 오는데,이 플러그인을 통해 검색하여 내 의도에 유용하거나 그렇지 않은 것으로 분류됩니다.Linq 표현 혼동과 실행이 결합 된 경우

생각이 일단 그 pathes에서 일치 얻을,이 클래스의 인스턴스를 만들고 그것을 view 반환하는 메서드를 호출 할 수 있습니다.

위임자를 전달하고 적절한 코드를 호출 할 수있을만큼 충분히 알아낼 수는 있지만 여전히 클래스에 대한 포인터를 보유하고 있습니다. 원하는 것은 아닙니다. 이 클래스의 인스턴스를 만들고 원하는 메서드를 호출하고 싶습니다. 내가 여기에 경로를 사용하는 아마해야 느낌, 또는 아마도 식을 가지고

public class TestView : IView 
{ 
    public void Render(ViewContext viewContext, System.IO.TextWriter writer) {} 
} 

class TestViewCreator 
{ 
    public IView CreateView(object Arguments) 
    { 
     return new TestView(); 
    } 
} 

public class CentralStash 
{ 
    // T = TestViewCreator 
    // How do I describe the method I want to call (CreateView)? 
    public void RegisterPath<T>(string url, object Arguements) 
    { 

    } 

    public IView GetView(string url) 
    { 
     var viewCreator = ObjectFactory.GetInstance<T>(); 
     //How do I call the method description on the type that I have jsut instanced? 
     return null; 
    } 
} 

: 여기

는 윤곽입니까? 나는 이것이 대리인들과 할 수 있다는 것을 알고 있지만 포인터 때문에 몇몇 객체를 놓기를 원하지 않는다.

올바른 방향으로 조금 움직여 주시면 감사하겠습니다.

업데이트 :

난 그냥 인터페이스를 만들 수 나오긴의

:

public interface IViewCreator 
{ 
    public IView CreateView(object Arguments); 
} 

그리고 CreateView 전화 중 하나를 만들 수 있지만이 더 강력하게 기대했다.

+0

대리인을 전달하는 것이 훨씬 더 좋습니다. 객체 인수 param이 필요 없습니다. 그리고 대의원 간접비? 그렇다면 문자열을 전달하고 매개 변수를 입력하고 저장하면 개체가 남아있게됩니다. – MichaelGG

+0

이 말은별로 의미가 없습니다 ... 편집하면 내가 대답 할 수 있습니다. –

답변

0
public IView GetView(string url) 
{ 
    object viewCreatorObj = ObjectFactory.GetInstance<T>(); 
    TestViewCreator viewCreator=? viewCreatorObj as TestViewCreator; 

    return viewCreator.CreateView(null); 
}