c# - 在运行时已知类型时如何将对象转换为类型?

标签 c# .net wcf

我有一个类似这样的语句:MyClass myClass = report.DataSource as MyClass

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

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

(我希望我已经解释清楚了。我现在脑子里都是雾!)

最佳答案

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

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

我也遇到过类似的问题 - 在这一点上,您可以做的最简单的事情可能是制作您自己的通用转换器方法,该方法将从一种类型读取公共(public)属性,并将它们填充到另一种类型.

这是可以做到的,因为您 promise 这两个类看起来是一样的:)

关于c# - 在运行时已知类型时如何将对象转换为类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18199120/

相关文章:

c# - 如何在 .NET 中使用 Ruby 代码?

c# - 根据地区更新报表查看器货币

asp.net - 使用 Autofac 将 DI 引入 ASP.NET 应用程序中托管的 WCF 服务

c# - 如何调试此 WCF Web 服务? ("ServiceChannel is in the Faulted state")

c# - WCF - 在没有客户端调用的情况下发送回调

c# - 返回可执行文件名的 Winform 命令行参数

c# - 使用 GC.Collect() 是正确的; GC.WaitForPendingFinalizers();?

c# - 是否可以检查缓存的正则表达式的数量?

c# - IEnumerable<T> 的 foreach 总是调用非泛型 Enumerator

c# - 多个下拉列表更改每个表 C# 和 MySql 查询