我在第三方 DLL 中有一个类。
Class A
{
}
我需要装饰它所以我创建了它的本地实例并使用了它
class B
{
}
DLL 包含一个函数,它给我 A 的列表。但是如果我尝试按如下方式使用它
B listofB = Dll.FindAllA()
我收到错误消息,无法将 DLL.A 隐式转换为 Proj.B
这两个类的结构没有区别。我如何转换它?
最佳答案
如果A
和 B
没有任何共同点(除了它们看起来相同),编译器运气不好。选项:
- 继承(有时)
- 向任一类型添加转换运算符
- 添加
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/