当前位置: 首页 > wzjs >正文

企业做网站需要什么郑州做网站最好的公司

企业做网站需要什么,郑州做网站最好的公司,wordpress 在文章前面加序号,微网站建设c概要 本文提供了一个基于C#表达式目录树的方法来解决泛型参数不能调用带参数的构造方法来实例化的问题。 C#泛型的限制 我们看如下的代码&#xff0c;User类需要一个泛型类&#xff0c;泛型类是要以CreditCard为基类。 class User<T> where T :CreditCard, new() {pr…

概要

本文提供了一个基于C#表达式目录树的方法来解决泛型参数不能调用带参数的构造方法来实例化的问题。

C#泛型的限制

我们看如下的代码,User类需要一个泛型类,泛型类是要以CreditCard为基类。

class User<T> where T :CreditCard, new()
{private readonly T _value;public User(){_value = new T();}}

以上代码可以正常运行,但是我们稍加修改,我们需要调用信用卡类的另一个构造方法,传入用户id,代码如下:

class User<T> where T :CreditCard, new()
{private readonly T _value;public User(){_value = new T(userId);}}

上面的代码是不能通过编译的,因为C#无法在创建变量类型的实例时候,传入参数。这个是C#的限制。

解决方法

我们通过构造表达式目录树,动态构建一个委托,将参数传入。目标委托的是(int userId) => T(userId),我们执行该委托方法,就可以传入参数,在创建变量类型的实例时候,传入参数。

我们定义一个方法createTWithParam(int userId)的方法,用表达式目录树实现该方法:

	public T createTWithParam(int userId) {ParameterExpression parameter = Expression.Parameter(typeof(int), "userId");ConstructorInfo ctor = typeof(T).GetConstructor(bindingAttr: BindingFlags.Instance | BindingFlags.Public,binder: null,callConvention: CallingConventions.HasThis,types: new[] { typeof(int), typeof(string) },modifiers: new ParameterModifier[] { });var expressionNew = Expression.New(ctor, new Expression[] { parameter });LambdaExpression newLambda = Expression.Lambda<Func<int, T>>(expressionNew, new ParameterExpression[] { parameter });var newLambdaDelegate = (Func<int,T>)newLambda.Compile();var creditCard = newLambdaDelegate.Invoke(number);return creditCard;}
  1. 构造Lambda表达式左侧的(int userId),变量名是userId;
  2. 构造 表达式new T(userId);
  3. 编译表达式,生成委托;
  4. 传入参数,调用该委托,生成T类型的实例。

附录

internal  class CreditCard
{public CreditCard(int userId){Console.WriteLine(userId);}public CreditCard(){}
}
http://www.dtcms.com/wzjs/277943.html

相关文章:

  • 海外如何淘宝网站建设原画培训班一般学费多少
  • 河南手机网站设计系统优化大师
  • 购物网站建设合同搜索引擎营销原理
  • 辽宁省建设工程信息网站自己如何注册一个网站
  • 网站开发工具js合肥seo服务商
  • 网站使用的主色调千博企业网站管理系统
  • 二手交易网站怎么做军事新闻最新24小时
  • 15年做哪个网站致富百度店铺
  • 上海做网站高端seo排名点击报价
  • 如何建设一个子网站淮安百度推广公司
  • 上海高端网站制作公司seo狂人
  • 买完域名后如何建设网站中央刚刚宣布大消息
  • 日本真人做爰直播网站手机网站建设价格
  • 广州移动 网站建设宁波seo费用
  • 网站建设呼和浩特怎么建立网站快捷方式
  • 来年做那个网站能致富网络推广人员是干什么的
  • 酒类网站建设全国疫情排行榜最新情况列表
  • 企业大型网站开发建站教程详解查关键词排名网
  • 怎么查看网站是否备案军事新闻今日最新消息
  • 品牌型网站建设解决方案湖北网站推广
  • 前端做学校网站教务湖南正规seo优化报价
  • 云南网站建设电话云建站
  • 做电影网站赚钱么设计好看的网站
  • wordpress点击图片上传关键词seo教程
  • 区县12380网站建设情况如何让自己的网站排名靠前
  • 游戏网站域名怎么做百度推广平台
  • 做买衣服的网站百度竞价排名危机事件
  • 设计软件排行seo咨询常德
  • 什么网站可以做十万的分期付款百度关键词首页排名服务
  • 免费做电脑网站上海百度推广