【问题标题】:Adding public class to [operationcontract] in WCF to expose to the client?将公共类添加到 WCF 中的 [operationcontract] 以向客户端公开?
【发布时间】:2018-07-08 22:26:57
【问题描述】:

我可以在 WCF 中调用从服务到 [operationcontract] 的公共类以向客户端公开吗?这是我的代码:

Service.svc.cs

public class Service : IService
{
    public class UserRights
    {
        public static bool _canEdit;
    }
}

这是给我的 IService.cs

[ServiceContract]
public interface IService
{
    [OperationContract(Name = "UserRightsContract")]
    public class UserRights;
}

更新

我想通过 WCF 向客户端公开公共类 UserRights。我在考虑是否可以创建一种方法来向客户端公开类?

【问题讨论】:

  • 您的意思是,您可以从不同的类而不是通过 WCF 调用该类方法吗?其实你的问题很混乱,你可以考虑改写它
  • 对不起,@Saruman。我的意思是我想通过 WCF 向客户端公开public class UserRights。我在考虑是否可以创建一种方法来向客户端公开类?
  • 你的代码没有意义

标签: c# wcf


【解决方案1】:

公开UserRights 类的唯一方法是在方法调用中返回它

DataContract装饰你的班级

[DataContract]
public class UserRights
{
    [DataMember]
    public static bool _canEdit;
}

将方法添加到您的界面

[ServiceContract]
public class Service : IService
{
   ...

    [OperationContract]
    UserRights GetUserRights();
}

在你的服务中实现它

public class Service : IService
{
    public UserRights GetUserRights()
    {
        return new UserRights();
    }
}

【讨论】:

  • 我试过了,但没用。如何创建暴露类的方法?
【解决方案2】:

我可以在 WCF 中调用从服务到 [operationcontract] 的公共类吗 暴露给客户?

你不能。您只能使用 WCF 公开方法。

您在界面中写的内容也不正确。你不需要写public,默认情况下一切都是public的。

如果你想公开类的实例,你可以做类似的事情。

[ServiceContract]
public interface IService
{
    [OperationContract(Name = "UserRightsContract")]
    UserRights GetUserRights();
}

实施

public class Service : IService
{
    public UserRights GetUserRights()
    {
        UserRights userRights = new UserRights();
        //Set other properties.
        return userRights;
    }
}
[DataContract]
public class UserRights
{
    [DataMember]
    public static bool _canEdit;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多