Как я могу отложить необходимость указать T в моем пользовательском элементе управления Asp.net? - PullRequest
0 голосов
/ 16 августа 2011

Моя дилемма:

  • У меня есть POCO: "ReportSource", который является общим.
  • У меня есть пользовательский элемент управления, завершающий некоторую логику построения отчетов.
  • Мой пользовательский элемент управления определяет свойство ReportSource, но в конечном итоге это будет задача страницы, которая вызывает пользовательский элемент управления для назначения этого свойства ReportSource.

Как я могу определить свойство в моем пользовательском элементе управления, не указывая T? Кстати, я пытался (только для жаворонков) сделать общий элемент управления пользователя ... Это плохо кончилось.

public ReportSource<T> ReportSource {get; set;}

(Обратите внимание, что я отметил это как C # и VB.net ... C # - моя норма, но мне приходится иметь дело с наследием ... Ответ на любой из вопросов приветствуется)

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Не могли бы вы переместить специфическую логику T в неуниверсальный ReportSource? Это «задерживает» необходимость указывать T до тех пор, пока вызывающему абоненту не потребуется T специально или пока ReportSource не потребуется T. Другими словами, ReportSource будет иметь обобщенные методы, принимающие T, или иначе инкапсулирует или скрывает T в целом.

1 голос
/ 16 августа 2011

Если ваш контроль не знает T, то он не может этим воспользоваться.

Возможно, вы могли бы обойтись, объявив не универсальный интерфейс для ReportSource<T>, который включает в себя части, которые должны использовать ваши элементы управления?

...