我在不同的命名空间中有两个类,我需要输入cast。
如何在另一个类中输入一个类的强制转换对象。这两个类都有相同的方法和属性。
5月反思会起作用吗? 类的类型转换的任何例子都会有所帮助。答案 0 :(得分:2)
你不能直接从一种类型转换为另一种类型,你可以这样做:
答案 1 :(得分:1)
除非它们以某种方式相关,否则你不能施放它们,例如,一个是其他的基础。
您可以通过多种不同的方式从一个映射到另一个,一个是使用映射器,AutoMapper是众所周知的一个
https://github.com/AutoMapper/AutoMapper
这个wil会根据类成员名称从一个映射到另一个
答案 2 :(得分:0)
如果类与任何方式无关,则另一种解决方案(部件表单映射)可以使用dynamic
。
事件,如果这太危险,但可以被视为可能的选项之一:
namepsace A {
public class NotRelatedA() {
public void Run() {}
}
}
namepsace B {
public class NotRelatedB() {
public void Run() {}
}
}
dynamic dyn = new A.NotRelatedA();
dyn.Run(); //Run A
dyn = new B.NotRelatedB();
dyn.Run(); //Run B, without changing and mapping anything
重复一遍,这是一种危险,因为你离开安全的静态类型世界,并跳进动态强大的混乱,所以如果你使用它,使用它与causion。
答案 3 :(得分:0)
这些课程有多少属性?他们是“手写”课程吗?
也许你不需要两个类,可以删除其中一个并在其他地方使用另一个?
也许其中一个类可能来自另一个类?然后,您只需要在基类中编写公共属性和方法。
如果你需要两个不同的类,并且都不是从另一个派生的(这是一个msut对于允许“普通”强制转换(参考转换强制转换)的情况),你有几个选择:
public static explicit operator ClassOne(ClassTwo ct)
做“翻译”。有了它,它允许使用标准的强制转换语法(即说(ClassOne)variable
)或