none
请问 WCF 可传递 static 方法吗? RRS feed

  • 问题

  • 请问 WCF 可传递 static 方法吗?
    小弟我试了后,默认是不行,
    但现在有一大堆 Class、static method,需要挂在 WCF Service 网站、IIS 上。

    麻烦请网友们提供建议或解决方式,或相关 url,

    先谢谢各位。

    [ServiceContract]
    public interface IService
    {
      [OperationContract]
      static string GetData(int value);  //这里不能声明为 static
    }
    

    若上方代码,IService 接口里 GetDate 方法,移除 static 声明,只如下,只在 Service 类 的  GetData 方法,聲明為 static,則會變成以下的錯誤 :

    public class Service : IService
    {
      public static string GetData(int value)
      {
        return "測試信息~";
      }
    }
    

    錯誤    1    'Service' 未实作接口成员 'IService.GetData(int)'。'Service.GetData(int)' 无法实作接口成员,因为它是静态的。    C:\Inetpub\WCF090809\ServerSide\App_Code\Service.cs    6    14    C:\...\ServerSide\

     

    谢谢各位先进。

     


    Wizard 编程网 - 博客园
    2010年10月29日 5:08

答案

  • 要透过其他 Class 的 非 static method (instance method) 多包一层:

    http://topic.csdn.net/u/20101029/13/c6f41fde-710b-4867-a895-262fb969a735.html?seed=953430675&r=69452447#r_69452447

     

    也欢迎其他高手提供不同解法和意见,先谢谢了。

     


    Wizard 编程网 - 博客园
    • 已标记为答案 吳浩然 2010年10月29日 11:36
    2010年10月29日 6:02
  • 刚听 j2eer 转 .NET 的同事说,EJB 也是这样处理 static method 的服务:

    要透过其他 Class 的 非 static method (instance method) 多包一层

     

     

    public class Service : IService
    {
     //private SomeStaticClass staticClass; //這行不用
     public string GetData(int value) { return staticClass.GetData(); } }
    刚试了那位 csdn 网友提供的示例,这样是可行的。

     

     

     


    Wizard 编程网 - 博客园
    • 已标记为答案 吳浩然 2010年10月29日 11:36
    2010年10月29日 7:54

全部回复

  • 要透过其他 Class 的 非 static method (instance method) 多包一层:

    http://topic.csdn.net/u/20101029/13/c6f41fde-710b-4867-a895-262fb969a735.html?seed=953430675&r=69452447#r_69452447

     

    也欢迎其他高手提供不同解法和意见,先谢谢了。

     


    Wizard 编程网 - 博客园
    • 已标记为答案 吳浩然 2010年10月29日 11:36
    2010年10月29日 6:02
  • GetData函数本身就没有必要做成静态啊

    要透过其他 Class 的 非 static method (instance method) 多包一层:

    http://topic.csdn.net/u/20101029/13/c6f41fde-710b-4867-a895-262fb969a735.html?seed=953430675&r=69452447#r_69452447

     

    也欢迎其他高手提供不同解法和意见,先谢谢了。

     


    Wizard 编程网 - 博客园

    2010年10月29日 6:50
  • 您好,GetData() 只是用来与例的方法。

    因小弟我现在有一大堆既有的自定义 Class、static method,需要挂在 WCF Service 网站、IIS 上


    Wizard 编程网 - 博客园
    2010年10月29日 6:53
  • 我还真没 考虑过这个情况。

    很特殊的用法啊

    呵呵。

    顶一下,学习~

     


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    2010年10月29日 7:36
    版主
  • 刚听 j2eer 转 .NET 的同事说,EJB 也是这样处理 static method 的服务:

    要透过其他 Class 的 非 static method (instance method) 多包一层

     

     

    public class Service : IService
    {
     //private SomeStaticClass staticClass; //這行不用
     public string GetData(int value) { return staticClass.GetData(); } }
    刚试了那位 csdn 网友提供的示例,这样是可行的。

     

     

     


    Wizard 编程网 - 博客园
    • 已标记为答案 吳浩然 2010年10月29日 11:36
    2010年10月29日 7:54