WebApi 通过类名获取类并实例化
环境:Web Api 返回值类型为DTO实体,继承基类DTO---BaseResultDto
public class BaseResultDto
{
/// <summary>
/// 结果代码
/// </summary>
[XmlElement("result")]
public int Result { get; set; } /// <summary>
/// 结果信息
/// </summary>
[XmlElement("message")]
public string Message { get; set; } /// <summary>
/// 构造函数
/// </summary>
public BaseResultDto()
{
this.Result = ResponseCode.SUCCESS;
this.Message = string.Empty;
} /// <summary>
/// 构造函数
/// </summary>
/// <param name="result"></param>
/// <param name="message"></param>
public BaseResultDto(int result, string message)
{
this.Result = result;
this.Message = message;
}
}
背景:在执行每个Action前先执行筛选器操作,在筛选中,如果报错,无法返回当前Action的返回值类型,如果都返回基类DTO,客户端无法解析当前Action的DTO名称(他们比较懒。。。)所以准备在筛选器中,截获当前请求的方法返回值类型,并在筛选报错的情况下返回。
public override void OnActionExecuting(HttpActionContext actionContext)
{
string retClass = actionContext.ActionDescriptor.ReturnType.AssemblyQualifiedName;
Type t;
object obj;
t = Type.GetType(retClass);//通过string类型的retClass获得同名类“t” if (t == null)
{
return;
}
obj = t.CreateInstance();
if (!WebConfig.GetEBOpenCity.Contains(city))
{
if (!obj.TrySetValue("message", "电商尚未开通该城市"))
{
return;
}
responseMessage.StatusCode = HttpStatusCode.OK;
responseMessage.Content = new ObjectContent(t, obj, new CustomXmlFormatter());
actionContext.Response = responseMessage;
return;
}
}
这样如果我请求的方法是:
public MyTradeListDTO GetMyTradeList(string mobile, int pageIndex, int pageSize)
{
//...
}
其中MyTradeListDTO继承BaseResultDto,如果在筛选器中报错,返回的是:
<MyTradeListDTO>
<result>-99</result>
<message>电商尚未开通该城市</message>
<Count>0</Count>
</MyTradeListDTO>
这样方便客户端解析了
WebApi 通过类名获取类并实例化的更多相关文章
- php 通过类名获取类的文件地址
$reflector = new ReflectionClass("Child"); $fn = $reflector->getFileName(); return dirn ...
- C#反射实例应用--------获取程序集信息和通过类名创建类实例
AppDomain.CurrentDomain.GetAssemblies();获取程序集,但是获取的只是已经加载的dll,引用的获取不到. System.Reflection.Assembly.Ge ...
- C#反射 获取程序集信息和通过类名创建类实例(转载)
C#反射获取程序集信息和通过类名创建类实例 . System.Reflection 命名空间:包含通过检查托管代码中程序集.模块.成员.参数和其他实体的元数据来检索其相关信息的类型. Assembly ...
- WebAPI的AuthorizeAttribute扩展类中获取POST提交的数据
在WEBAPI中,AuthorizeAttribute类重写时,如何获取post数据是个难题,网上找资料也不好使,只能自己研究,通过研究发现,WEBAPI给了我们获取POST数据的可能,下面介绍一下: ...
- Python中如何获取类属性的列表
这篇文章主要给大家介绍了在Python中如何获取类属性的列表,文中通过示例代码介绍的很详细,相信对大家的学习或者工作具有一定的参考借鉴价值,有需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近工作 ...
- 反射01 Class类的使用、动态加载类、类类型说明、获取类的信息
0 Java反射机制 反射(Reflection)是 Java 的高级特性之一,是框架实现的基础. 0.1 定义 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对 ...
- 【python】-- 类的实例化过程、特征、共有属性和私有属性
实例化过程 1.类的定义和语法 class dog(object): #用class定义类 "dog class" #对类的说明 def __init__(self,name): ...
- day21——面向对象初识、结构、从类名研究类、从对象研究类、logging模块进阶版
day21 面向对象的初识 面向对象第一个优点: 对相似功能的函数,同一个业务下的函数进行归类,分类. 想要学习面向对象必须站在一个上帝的角度去分析考虑问题. 类: 具有相同属性和功能的一类事物. 对 ...
- .NET C#利用反射获取类文件以及其中的方法&属性 并获取类及方法上的特性
了解C#特性类并声明我们自己的特性类[AttributeTest]代码如下 using System; namespace AttributeTest { /* 特性说明 特性本质是一个继承和使用了系 ...
随机推荐
- .net获取DataTable里面的值(asp.net遍历获取datatable的值)
方法一:for (int i =0; i < dtb_xx.Rows.Count; i++ ){response.write dtb_xx.Rows[i]["szxxxx1" ...
- SQL Server 日期字段作为查询标志字段的注意事项
今天在做一个数据抽取程序时遇到一个问题困扰好久才解决,这不是技术问题,而是常识和细心的问题.写出来让大家引起重视一下. 由于之前的程序长期用Oracle,并且数据标志字段采用的日期类型.在Oracle ...
- freecodecamp记录
来源:https://www.freecodecamp.cn 如果需要填充文本来检查排版效果,网上有自动生成器,乱文生成器:此外Microoft Word中有一个函数能够自动生成每段20句的6段填充文 ...
- PHP中面向对象的关键字
php面向对象中常用的关键字有final.static.const (1)final: 1,final不能修饰成员属性 2,final只能修饰类和方法 作用: 使用final修饰的类不能被子类继承 使 ...
- [转]关于AS3 Socket和TCP不得不说的三两事
磨刀不误砍柴工,让我们从概念入手,逐步深入. 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络 ...
- 《将博客搬至CSDN》
http://www.cnblogs.com/duenyang 两个博客一起用,大家也可以去我CSDN博看查看.
- workspace路径有中文情况会报java.net.MalformedURLException: unknown protocol: d错误
原因及描述:java读取xml文件时如果出现中文字符就会出现这类错误 解决方法: 1.将中文路径改为英文路径 2.读取file时"file:///d:/" 而不是"d ...
- Java 中多条件排序
Collections.sort(ghEntityList, new Comparator<GongHuiEntity>() { @Override public int compare( ...
- USACO翻译:USACO 2014 US Open 三题
USACO 2014 US Open 一.题目概览 中文题目名称 牧场装饰 里程表 牛像展览 英文题目名称 decorate odometer fairphoto 可执行文件名 decorate od ...
- 然并卵,腾讯QQ认证空间又再次关闭申请
昨天发布的腾讯QQ认证空间又开放申请的消息,此消息一放出,大家都去关注认证的事情,而马浩周发现在4月27日下午4-5点,腾讯QQ空间认证又再次关闭页面开放申请的通知,变成了以前停止审核的通知了. 可能 ...