Приведение производных типов и динамические рекомендации - PullRequest
3 голосов
/ 14 марта 2012

Я работаю над проектом в C # 4.0.У меня есть несколько классов презентаторов, которые все унаследованы от одного базового класса.У каждого из этих классов презентаторов есть «текущий» объект, который специфичен для каждого презентатора, но все они также имеют общий унаследованный класс, разумеется, отдельный от презентаторов.1003 *

class ApplicationPresenter inherits BasePresenter
   Pubilc PersonApplication Current (inherited from Person)
class RecordPresenter inherits BasePresenter
   Public PersonRecord Current (inherited from Person)
class InquiryPresenter inherits BasePresenter
   Public PersonInquiry Current (inherited from Person)

... и т. Д.

Есть ли способ сделать это так, чтобы я мог вызывать «текущий» из любого из них, не требуя определения типа, но придерживаясь его передового опыта?

Лучший вариант, который у меня есть, я думаю, это просто сделать его динамичным, поскольку я знаю, что все, что я передам, будет иметь «текущий» и делать это таким образом.Это правильно?

Или есть способ, которым я мог бы создать:

class BasePresenter
   Public Person Current

И сделать это соответствующим образом?

Я знаю, что есть способы обойти это, ноЯ ищу чистый и правильный, на этот раз.

Спасибо!

1 Ответ

5 голосов
/ 14 марта 2012

Добавьте параметр общего типа к базовому докладчику, чтобы любой производный конкретный докладчик мог указать пользовательский текущий тип элемента:

public abstract class PresenterBase<TItem>
{
   public TItem Current { get; private set; }
}

// now Current will be of PersonApplication type
public sealed class ApplicationPresenter : PresenterBase<PersonApplication>
{
}

// now Current will be of PersonRecord type
public sealed class RecordPresenter : PresenterBase<PersonRecord>
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...