Я разрабатываю пользовательский элемент управления (4.0), и мне интересно, как повторно использовать бизнес-класс как свойство, не переписывая его.
У меня есть набор классов в сборке бизнес-уровня (упрощенно):
public class LatLng
{
public decimal Lat { get; set; }
public decimal Lng { get; set; }
}
public class MapOptions
{
...
public LatLng Center { get; set; }
...
}
etc...
Я хочу повторно использовать класс MapOptions как свойство, мой пользовательский элемент управления выглядит примерно так:
public class MyControl : WebControl
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty)]
public MapOptions MapOptions
{
...
get
{
return this.ViewState["MapOptions"] as MapOptions;
}
set
{
this.ViewState["MapOptions"] = value;
}
...
}
}
Но при этом я не могу видеть свойства LatLng (и других классов, используемых в качестве свойств MapOptions) как внутренний раздел тега MapOptions. Только как атрибут.
Так что в разметке я могу написать:
<rec:MyControl ID="control1" runat="server" Width="900" Height="500">
<MapOptions Center="" />
</rec:MyControl>
Но таким образом я теряю intellisense для всех открытых LatLng, я ищу решение, чтобы получить это:
<rec:MyControl ID="control1" runat="server" Width="900" Height="500">
<MapOptions>
<Center Lat="12.0" Lng="2.0" />
</MapOptions>
</rec:MyControl>
Есть предложения?