c# - 如何对列表进行类型转换?

标签 c# .net

我在第三方 DLL 中有一个类。

Class A
{

}

我需要装饰它所以我创建了它的本地实例并使用了它

class B
{

}

DLL 包含一个函数,它给我 A 的列表。但是如果我尝试按如下方式使用它

B listofB = Dll.FindAllA()

我收到错误消息,无法将 DLL.A 隐式转换为 Proj.B

这两个类的结构没有区别。我如何转换它?

最佳答案

如果AB没有任何共同点(除了它们看起来相同),编译器运气不好。选项:

  • 继承(有时)
  • 向任一类型添加转换运算符
  • 添加 ToA等扩展方法(如果类型超出您的控制范围)
  • 试试自动映射器
  • 使用序列化(有一些方法可以让一些序列化器使用不同的名称等)

我会先选择前两个选项。请注意 List<T>您可以使用全部转换,即:

List<A> orig = ...
List<B> copy = orig.ConvertAll(a => (B)a);// assumes a conversion operator exists

对于其他类型,LINQ Select方法等同于ConvertAll .

关于c# - 如何对列表进行类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4032000/

相关文章:

c# - 如何在 Silverlight 的 ViewModel 中使用 Command 处理 Checkbox Checked/Unchecked 事件?

javascript - 使用 SignalR 获取角色中的用户列表

c# - .NET:打开嵌入在资源文件中的文件

.net - 每当我们访问属性时,我们是否应该声明一个局部变量?

c# - 如何通过C#通过OpenXML从Word(.Docx)中提取OLE文件

c# - C#中私有(private)类的概念

c# - 为什么向 void 返回方法添加返回类型会导致 MissingMethodException

.net - 如何探索 .NET 应用程序中的托管堆来识别可能的内存优化?

c# - 从 C# 调用 python 代码(.py 文件)

c# - HttpWebRequest 长 URI 解决方法?