Linq Expression Confusion в сочетании с проигравшимся исполнением - PullRequest
0 голосов
/ 05 февраля 2009

Я хочу выполнить определенную часть кода, когда путь соответствует определенной потребности или шаблону. Я импортирую несколько путей из разных плагинов, которые будут искать и сортировать, которые полезны или не нужны для моего намерения.

Идея состоит в том, что, как только я получу совпадение из этих путей, я хочу создать экземпляр этого класса и вызвать его метод для возврата 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, но я надеялся сделать это более мощным.

1 Ответ

0 голосов
/ 29 июля 2013
public IView GetView(string url)
{
    object viewCreatorObj = ObjectFactory.GetInstance<T>();
    TestViewCreator viewCreator=? viewCreatorObj as TestViewCreator;

    return viewCreator.CreateView(null);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...