Вы используете право JAXB 2.0? (начиная с JDK6)
существует класс:
javax.xml.bind.annotation.adapters.XmlAdapter<ValueType,BoundType>
, который может разделить на подклассы, и переопределение в соответствии с методами:
public abstract BoundType unmarshal(ValueType v) throws Exception;
public abstract ValueType marshal(BoundType v) throws Exception;
Пример:
public class YourNiceAdapter
extends XmlAdapter<ReceiverPerson,Person>{
@Override public Person unmarshal(ReceiverPerson v){
return v;
}
@Override public ReceiverPerson marshal(Person v){
return new ReceiverPerson(v); // you must provide such c-tor
}
}
Использование сделано как следующее:
@Your_favorite_JAXB_Annotations_Go_Here
class SomeClass{
@XmlJavaTypeAdapter(YourNiceAdapter.class)
Person hello; // field to unmarshal
}
я вполне уверен, при помощи этого понятия, которое можно управлять процессом маршалинга/немаршалинга собой (включая выбор корректное [sub|super] тип для построения).
Это означает, что вы связываете выражение так, как вы продемонстрировали eval или bind.
Синтаксис привязки данных
Выражения привязки данных содержатся в разделителях <% # и%> и используют функции Eval и Bind. Функция Eval используется для определения односторонней привязки (только для чтения). Функция Bind используется для двусторонней (обновляемой) привязки. Помимо вызова методов Eval и Bind для выполнения привязки данных в выражении привязки данных, вы можете вызвать любой общедоступный код в пределах разделителей <% # и%> для выполнения этого кода и возврата значения во время обработки страницы.
просто чтобы добавить ...
у вас также есть:
$
позволяет вам привязать ресурс, например:
<%$ Resources:Menu, oktext %>
=
самый известный связующий знак , давайте сделаем то же самое, что и метод Response.Write
<%= myVariable %> instead <% Response.Write(myvariable) %>
Новым в .NET 4.0 является
:
, который похож на <% =%>
, но HTML кодирует ваш вывод. Он используется как:
<%: Model.Name %>
И это похоже на вызов
<%= HttpServerUtility.HtmlEncode(Model.Name) %> .. or ..
<% Response.Write(HttpServerUtility.HtmlEncode(Model.Name)) %>
вот примечание к $
<%$ prefix:value %>
Он создает построитель выражений на основе префикса и передает значение построителю выражений для оценки. Затем построитель выражений возвращает запрошенное значение на страницу
. Примером может служить ASP.NET 4 Routing:
<%$ RouteUrl:RouteName=ProductList %>
, который оценивает маршрут 'ProductList', который должен быть в RouteTable.Routes.
Маршрут можно добавить в RouteTable, например, в Global.asax.cs:
RouteTable.Routes.Add( "ProductList", new Route( "products", new PageRouteHandler("~/ProductList.aspx")
));
Преимущество использования $ и RouteUrl состоит в том, что вы можете хранить всю свою маршрутизацию и URL-адреса в одном месте в Global.asax. cs.
Здесь есть дополнительная информация о $:
http://www.beansoftware.com/ASP.NET-Tutorials/Expression-Builder.aspx