C# 按类型访问ServiceStack requestDto对象
我正在使用一个ServiceStack请求过滤器,我想检查requestDTO参数的一个属性。此参数在运行时为强类型,但在编译时为泛型对象 过滤器将用于多个服务调用,因此requestDTO类型将根据调用的服务类型而变化。因此,我无法对其执行特定的强制转换。但是,无论类型如何,requestDTO对象都将始终具有名为“AppID”的字符串属性。我想进入的就是这家酒店 以下是我的代码(当前未编译): 此行不编译:C# 按类型访问ServiceStack requestDto对象,c#,
servicestack,C#,
servicestack,我正在使用一个ServiceStack请求过滤器,我想检查requestDTO参数的一个属性。此参数在运行时为强类型,但在编译时为泛型对象 过滤器将用于多个服务调用,因此requestDTO类型将根据调用的服务类型而变化。因此,我无法对其执行特定的强制转换。但是,无论类型如何,requestDTO对象都将始终具有名为“AppID”的字符串属性。我想进入的就是这家酒店 以下是我的代码(当前未编译): 此行不编译: var app = this._appIDs.Apps.Where(x =>
var app = this._appIDs.Apps.Where(x => x.ID == requestDto.AppID).FirstOrDefault();
我是否需要在这里处理反射以访问我的对象,或者是否有某种内置于ServiceStack本身的方式?将通用功能应用于公共请求DTO时,首选的方法是让它们实现相同的接口,例如:
public interface IHasAppId
{
public string AppId { get; set; }
}
public class RequestDto1 : IHasAppId { ... }
public class RequestDto2 : IHasAppId { ... }
然后,在过滤器中,您只需执行以下操作:
var hasAppId = requestDto as IHasAppId;
if (hasAppId != null)
{
//do something with hasAppId.AppId
...
}
您也可以避免使用接口而改用反射,但反射速度较慢,可读性较差,因此我建议改用接口。Gargh,当然。他们已经实现了适当的接口,我太傻了。再次感谢。
var hasAppId = requestDto as IHasAppId;
if (hasAppId != null)
{
//do something with hasAppId.AppId
...
}