无法投射C#
发布时间:2020-12-15 20:52:52 所属栏目:百科 来源:网络整理
导读:我的解决方案中有2个不同的项目. 在一个我有一个名为MyClass1的类,而在另一个我有MyClass2 这些类除了名称之外都是相同的. 在一个项目中,我有一个对象列表.在运行期间,列表中填充了MyClass1对象 我们铸造了一个物体. 最后,我想将列表中的每个对象转换为MyCla
我的解决方案中有2个不同的项目.
在一个我有一个名为MyClass1的类,而在另一个我有MyClass2 在一个项目中,我有一个对象列表.在运行期间,列表中填充了MyClass1对象 最后,我想将列表中的每个对象转换为MyClass2对象. 目前它抛出一个异常,说无法将MyClass1类型的对象强制转换为MyClass2. 我的代码: List<Object> _tempObjects = new List<Objects>(); foreach(Object myObjectInput in _tempObjects) { MyClass2 temp = (MyClass2) myObjectInput; // here is where it dies } 这两个类是相同的,只是名称不同. MyClass2 temp = myObjectInput as MyClass2; 解决方法
投射不起作用.当将(一个静态对象的对象)对象转换为另一个类型时,它必须已经是该类型的实例才能工作.也许你想用
AutoMapper从一个转换到另一个,例如
Mapper.CreateMap<MyClass1,MyClass2>(); // later... MyClass2 temp = Mapper.Map<MyClass2>(myObjectInput); 或者手动复制属性,可能在构造函数中: public MyClass2(MyClass1 other) { this.SomeProperty = other.SomeProperty; // etc } MyClass2 temp = new MyClass2((MyClass1)myObjectInput); 更有可能的是,你应该做的是让项目以.NET本身理解和支持的方式共享MyClass:将它放在一个可以被两个项目引用的项目中.如果一个项目应该引用另一个,那就这样做;否则,创建第三个项目作为库. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |