【问题标题】:Type class variable in c# [duplicate]c#中的类型类变量[重复]
【发布时间】:2018-12-10 15:40:01
【问题描述】:

如何使用类型变量进行转换? 考虑下面的代码

public static object As(object o1, Type t1)
{
  return (t1)o1;
}

但它向我显示了一个错误,即 t1 是一个变量并用作类型。我怎样才能达到这个目的。是否可以从类型对象中检索类型。我被要求在 c# 中实现 is 和 as 运算符,因此方法名称。

【问题讨论】:

  • 泛型.......
  • 转换还是转换?方法返回对象,我看不到强制转换它的理由。对于转换使用 Convert.ChangeType

标签: c# casting


【解决方案1】:

试试这个:

public static T Cast<T>(object obj, Type castTo) 
{ 
     return (T)Convert.ChangeType(obj, castTo); 
}

一个例子:

https://dotnetfiddle.net/JqFMds

【讨论】:

  • 如果你不是dynamic,而是通过object并执行T Cast&lt;T&gt;(object obj, Type castTo) { return (T)Convert.ChangeType(obj, castTo); },那么你不需要返回dynamic
  • 谢谢。我更新了答案
  • 除了泛型还有别的办法吗。
  • @NagasivaniSiddana:你可以使用这个版本:dotnetfiddle.net/E4ervV,动态的。但我觉得我的回答更优雅
  • 显示对象应该实现Iconvertable接口的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2021-02-13
  • 2019-09-29
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多