代码之家  ›  专栏  ›  技术社区  ›  JL. Hans Passant

如何转换强数据类型?

c#
  •  3
  • JL. Hans Passant  · 技术社区  · 14 年前

    我希望你们能帮我解决这个问题…

    我有一个类库,其中包含1个复杂类。此类库用于解决方案中的其他两个项目中。1=控制台应用程序,2=Web服务应用程序(网站应用程序)。

    在控制台应用程序中,我创建了一个asmx web服务引用,它将我的复杂类作为方法调用中的1参数传递。

    类的类型为:ScheduleSummaryTransport

    在控制台应用程序中执行工作的函数需要从类库dll绑定的对象,而不是从web服务引用绑定的对象。但是Web服务调用需要类型为…从web服务引用。

    所以我怎么能投

    ClassLibrary.ScheduleSummaryTransport->WebService.ScheduleSummaryTransport?

    我试过了:

    wsReporting.SendReportSummary( (Reporting.ScheduleSummaryTransport) scheduleSummary);
    

    但是在visual studio中,它检测到一个设计时错误:无法转换表达式…..

    请帮忙,谢谢

    更新

    完整性更多代码:

    /// <summary>
            /// Sends the schedule report via email.
            /// </summary>
            /// <param name="scheduleSummary">
            /// The schedule summary.
            /// </param>
            private static void SendScheduleReport(ScheduleSummaryTransport scheduleSummary)
            {
                if (!Convert.ToBoolean(ConfigurationManager.AppSettings["EmailSummary"]))
                {
                    return;
                }
    
                Trace.WriteLine(string.Empty);
                Trace.WriteLine("Sending summary by email... please wait ");
    
                Reporting.Reporting wsReporting = new Reporting.Reporting { Timeout = -1 };
                wsReporting.SendReportSummary( (Reporting.ScheduleSummaryTransport) scheduleSummary);
                Trace.WriteLine("Done...");
            }
    
    3 回复  |  直到 14 年前
        1
  •  4
  •   Jens    14 年前

    WebService代理生成器(wsdl.exe)生成一个类,用于保存通过WebService传输的对象的所有信息。 这个新类与客户端中引用的类冲突。

    你需要去掉自动生成的类。为此,请显示解决方案资源管理器中的所有文件(顶部的图标)。将有一个类reference.cs作为WebService引用的子级,您可以在其中找到自动生成的代码。添加一个 using ClassLibrary 然后删除所有与重复类相关的代码。

    为我工作。=)

        2
  •  3
  •   Jon Skeet    14 年前

    如果他们是不相关的类型,你 不能 在他们中间。就像试着从 String MemoryStream -你认为会发生什么?编译器知道这是行不通的,所以它会阻止您尝试它。

    这里的问题首先是有多个类型。如果你能避免 可能地 这样做。如果不能,则需要编写某种转换方法two在两种类型之间转换。

        3
  •  0
  •   Jon Norton    14 年前

    我仍然不清楚为什么同一个类有两个不同的版本,但是如果你不能在这两个地方找到你引用和使用类库中的版本的地方,你可能想签出 Automapper 处理从一个版本到另一个版本的映射。