加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在运行时知道类型时将对象强制转换为类型?

发布时间:2020-12-15 05:41:06 所属栏目:百科 来源:网络整理
导读:我有一个这样的声明:MyClass myClass = report.DataSource as MyClass 在运行时期间,DataSource的类型是MyClass,但它与当前运行的项目位于不同的命名空间中.那是因为两个项目正在从同一个服务引用中创建相同的类. DataSource指向一个命名空间,MyClass强制转
我有一个这样的声明:MyClass myClass = report.DataSource as MyClass

在运行时期间,DataSource的类型是MyClass,但它与当前运行的项目位于不同的命名空间中.那是因为两个项目正在从同一个服务引用中创建相同的类. DataSource指向一个命名空间,MyClass强制转换来自不同的namesapce. (解释这是怎么发生的很复杂)

在运行时,如何使用从report.DataSource.GetType()返回的类型(从另一个命名空间返回MyClass)并将其用作类型转换而不是我不想要的命名空间中的“MyClass”?

(我希望我已经清楚地解释了.我的大脑现在有雾!)

解决方法

不幸的是,它不仅仅是“不同命名空间中的同一个类”……基本上,你有2个类.由于自动生成的代码,它们是完全不同的类.

就.Net运行时而言,它们可能与“int”和“string”不同.他们甚至可能来自不同的集会.

我也有类似的问题 – 在这一点上,你可以做的最简单的事情就是制作你自己的通用转换器方法,它将从一种类型读取公共属性,并在另一种类型上填充它们.

这可以做到,因为你承诺这两个类看起来相同:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读