Serialization ServiceStack在反序列化器中实现魔术令牌
我想为我的基于ServiceStack的API实现一个神奇的令牌。每当任何值与这个特殊标记匹配时,我都希望在我的应用程序中发出特殊操作的信号。此赋值的理想位置是在SS处理wire格式(JSV、JSON、SOAP等)之后,以及将值映射到a.NET类型之前。目前,我想知道从这样的事情开始的最佳方式。这是我可以在Serialization ServiceStack在反序列化器中实现魔术令牌,serialization,servicestack,Serialization,servicestack,我想为我的基于ServiceStack的API实现一个神奇的令牌。每当任何值与这个特殊标记匹配时,我都希望在我的应用程序中发出特殊操作的信号。此赋值的理想位置是在SS处理wire格式(JSV、JSON、SOAP等)之后,以及将值映射到a.NET类型之前。目前,我想知道从这样的事情开始的最佳方式。这是我可以在Configure()中连接的东西吗?是不是有什么东西我必须重写并注入?如果您能在这方面提供任何帮助或指导,我们将不胜感激。我不认为这是ServiceStack实现的问题,而是您如何定义DTO
Configure()
中连接的东西吗?是不是有什么东西我必须重写并注入?如果您能在这方面提供任何帮助或指导,我们将不胜感激。我不认为这是ServiceStack实现的问题,而是您如何定义DTO的问题。鉴于这一要求,据我所知,我会选择这样的方式:
interface IOverridableDTO
{
Object overrideValue(Object value);
}
class BaseOverridableDTO : IOverridableDTO
{
bool doOverride {get(){return(//results of magic token check)};}
public Object overrideValue(Object value)
{ if {doOverride}
return(null); // or whatever the override needs to be
return(value);
}
}
class MyDTO : BaseOverridableDTO
{
// override the overrideValue() method, if necessary
private int myDTOProperty;
public int? MyDTOProperty {
get() {return overrideValue((Object)myDTOProperty)};
set(int value) {myDTOProperty = value;}
}
}
// use as follows:
void DoSomethingWithAnOverridableDTO(BaseOverridableDTO dtoObject)
{ ... }
我不认为这是ServiceStack实现的问题,而是如何定义DTO的问题。鉴于这一要求,据我所知,我会选择这样的方式:
interface IOverridableDTO
{
Object overrideValue(Object value);
}
class BaseOverridableDTO : IOverridableDTO
{
bool doOverride {get(){return(//results of magic token check)};}
public Object overrideValue(Object value)
{ if {doOverride}
return(null); // or whatever the override needs to be
return(value);
}
}
class MyDTO : BaseOverridableDTO
{
// override the overrideValue() method, if necessary
private int myDTOProperty;
public int? MyDTOProperty {
get() {return overrideValue((Object)myDTOProperty)};
set(int value) {myDTOProperty = value;}
}
}
// use as follows:
void DoSomethingWithAnOverridableDTO(BaseOverridableDTO dtoObject)
{ ... }
“只要任何值与此特殊标记匹配”-您所说的“值”到底是什么意思?任何DTO中的任何属性值?是。无论类型、DTO或任何其他限制如何,我都希望允许这个神奇的值作为输入,并根据它的存在触发行为。这就是为什么它需要在SS试图映射到一个类型之前被拦截;我希望数据上的int/bool/which字段能够有这个神奇的字符串值。“只要有任何值匹配这个特殊标记”-你所说的“值”到底是什么意思?任何DTO中的任何属性值?是。无论类型、DTO或任何其他限制如何,我都希望允许这个神奇的值作为输入,并根据它的存在触发行为。这就是为什么它需要在SS试图映射到一个类型之前被拦截;我希望数据上的int/bool/which字段能够有这个神奇的字符串值。