日期:2014-05-19  浏览次数:20954 次

◆◆◆自定义结构对象如何强制转换
我在一个工程中定义了一个结构,并建了一个对象,我通过反射调用另一个DLL中的窗体,并将结构值放到窗体的Tag属性中,在新窗体中,我又新定义了一个同样的结构,并从Tag属性中取出值来进行转换,却转换失败,怎么会这样,如果出现这种情况,我该怎么转换啊?


------解决方案--------------------
即使结构定义完全一样,只要不要同一个名称空间就应算是不同的类型.

为了保证正确的转换成功,你的两处对数据类型的定义应该放到一个公用的类里,然后在引用这同一个类就是了.


------解决方案--------------------
属于不同的名空间,就属于不同的类型,不能转换.

像这种情况,可以定义把类型定义成全局可见的,或是写成DLL在不同的项目中引用以使名称空间及程序集信息保持一致.
------解决方案--------------------
lz: "在新窗体中,我又新定义了一个同样的结构....... ",为什么又要定义一个这个结构呢?

在不同的命名空间里,即使同样名字的结构机或类,系统认为是完全不同的类型!!!你把原来的dll引用过来不就行了!!!!
------解决方案--------------------
或许C++没有C#在名称空间上这么严格.
解决的方法就是两个类型都要是同一个定义下的类型,要么引用,要么都重新定义.
------解决方案--------------------
重载类型转化运算符:
static public explicit operator Struct1(Struct2 s)
{
//.....
}
------解决方案--------------------
不懂,帮顶,接分
------解决方案--------------------
路过,不懂,帮顶
------解决方案--------------------
类名只是 你的 名字

包括命名空间完整的限定名 才是 你的 身份证号