Лучше ли кастовать и возражать или использовать динамический во время привязки данных - PullRequest
0 голосов
/ 18 августа 2011

Наверное, мне любопытно, что лучше? Приведение DataItem к типу, я знаю, что это ... Или же передать объект функции, которая ожидает Dynamic, и позволить DLR творить чудеса.

  <asp:Repeater ID="rptItems" runat="server">
    <ItemTemplate>
      <div>
        <%# FormatBlogLink(Container.DataItem) %>
        OR
        <%# FormatBlogLink((BlogPost)Container.DataItem) %>
      </div>
    </ItemTemplate>
  </asp:Repeater>

код

protected string FormatBlogLink(dynamic blogPost)
{
/// Do a bunch of stuff 
}

против

protected string FormatBlogLink(BlogPost blogPost)
{
/// Do a bunch of stuff 
}

Мой пример прост, Я думал, что прочитал, что DLR будет кешировать то, на что он смотрел, так что это, поэтому мне любопытно, что является худшим для больших источников данных ... много кастинга или много использования динамического? (или) я немного сумасшедший ...:)

Ответы [ 2 ]

0 голосов
/ 18 августа 2011

Я бы тоже выбрал приведение - но вы можете сделать это в вашем методе FromatBlockLink - (пусть он возьмет объект). Преимущество этого заключается в том, что вы удаляете эту (маленькую) логику из своего поля зрения и, конечно, вы можете проверить тип в своей функции.

protected string FormatBlogLink(object blogPost)
{
   var post = blogPost as BlogPost;
   if (post == null) 
   {
      // throw or use show error-message
   }
   /// Do a bunch of stuff 
}
0 голосов
/ 18 августа 2011

Мое личное мнение было бы привести к подходящему типу, если это то, что вы ожидаете использовать.Единственная причина использования dynamic в вашем FormatBlogLink состоит в том, что вы ожидаете передать разные объекты, которые случайно имеют одни и те же имена свойств и методы и т. Д. В противном случае приведите к соответствующему типу и получите выгоду от intellisense.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...