如何dynamic 转换成实际类型 并实例化

tester222121 2014-04-06 05:50:38

//部分代码
public List<T> GetEntitiesByTable<T>(DataTable table, dynamic dync) where T : new()
{
T entity = dync == null ? new T() : dync; }

//使用
dynamic dync=new Dept();
List<dynamic> user=GetEntitiesByTable(dt,dync);


问题: T entity = dync == null ? new T() : dync; 如何将dync转换成其他类型。(也就是将T类型转换成实际dynamic的类型,并实例化)。现在这样写,循环出来每一条值是一样的。
试过T entity = dync == null ? new T() : dync.GetType();这样也不行。

谢谢
...全文
1726 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-04-06
  • 打赏
  • 举报
回复
dynamic转换为object再反射。
tester222121 2014-04-06
  • 打赏
  • 举报
回复
引用 3 楼 u014569752 的回复:
[quote=引用 1 楼 sp1234 的回复:] public List<T> GetEntitiesByTable<T>(DataTable table, T dync) where T : new() { return dync == null ? new T() : dync; } 这里用dynamic是捣乱。
因为我的T是传进来的值就是dynamic类型的,所以foreach得不到值,因此我放了一个有对象的dync=new Dept()的。用来循环里面每一个属性。 例如: dynamic dynUser=new User(); //dt是查询出来的对象 List<dynamic> listUser=GetEntitiesByTable(dt,dyncUser)//这个dyncUser是用来实例化T的。因为方法想要公共的,请大神指教。
tester222121 2014-04-06
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
public List<T> GetEntitiesByTable<T>(DataTable table, T dync) where T : new() { return dync == null ? new T() : dync; } 这里用dynamic是捣乱。
你好,这个dync其实我是想动态传一个类型类,可能是T本身,可能是Dept或者其他任何类型。请问有什么好办法解决?
  • 打赏
  • 举报
回复
你不要把类型“转换”吹成什么万能的东西,你要知道类型转换的机制才用。 dynamic只对熟悉它的想法的人,是用来提高编程效率的。对于根本不想思考其内部机制的人无效。 不要对dynamic听个风声,就中邪了。
  • 打赏
  • 举报
回复
public List<T> GetEntitiesByTable<T>(DataTable table, T dync) where T : new() { return dync == null ? new T() : dync; } 这里用dynamic是捣乱。

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧