0

所以,我有一个正在开发的应用程序,我必须调用两个冷 Fusion Web 服务,

http://blah/search.cfc and http://blah/asset.cfc

两者都返回一个“QueryBean”。我称它们为 DAM_Search 和 DAM_Asset。QueryBean 结果具有相同的类型,但它们存储在两个目录中。

DAM_Search 的此类位于 项目文件夹\Web References\DAM_Search\Reference.cs 和 DAM_Asset 具有相同的类,位于 项目文件夹\Web References\DAM_Asset\Reference.cs

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.225")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.SoapTypeAttribute(Namespace="http://wstypes.newatlanta.com")]

public partial class QueryBean {

    private object[] dataField;
    private string[] columnListField;

    /// <remarks/>
    [System.Xml.Serialization.SoapElementAttribute(IsNullable=true)]
    public object[] data {
        get {
            return this.dataField;
        }
        set {
            this.dataField = value;
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.SoapElementAttribute(IsNullable=true)]
    public string[] columnList {
        get {
            return this.columnListField;
        }
        set {
            this.columnListField = value;
        }
    }
}

我的问题是我想将此服务的结果发送到单个函数,该函数将 QueryBean 转换为 XML 节点,我可以将调用它的任何应用程序传回。但是当我尝试使用该函数时它失败了,因为 DAM_Search.QueryBean 与 DAM_Asset.QueryBean 不同。当我尝试施放它时

private XmlDocument Get_AssetInfo(object qBean)
{
      DAM_Search.QueryBean qBean2 = (DAM_Search.QueryBean)qBean;

我收到此错误消息

*无法将“DAM_Service.DAM_Asset.QueryBean”类型的对象转换为“DAM_Service.DAM_Search.QueryBean”类型。*

有没有一种方法可以强制转换,因为我知道数据类型实际上是相同的,或者有没有一种方法可以告诉 Web 服务对 QueryBean 类使用相同的类引用?

这对外面的任何人有什么影响吗?:-)

蒂姆

4

1 回答 1

0

如果您使对象在两侧真正相同,即具有相同的类型名称和程序集名称,您可能能够执行此转换。

我的意思是,您可以拥有一个单独的 DLL,其中包含像 QueryBean 这样的共享类。然后从两个服务中引用这个项目。现在演员应该成功了。

它失败的原因是因为即使两个项目中的 QueryBean 类具有完全相同的属性,.NET Framework 也不知道这一点,因为这两种类型位于完全不同的程序集中。

于 2012-10-29T22:27:16.133 回答