将公共类添加到WCF中的[operationcontract]以向客户端公开?

时间:2018-01-30 05:40:21

标签: c# wcf

我可以将服务中的公共类从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公开给客户端。我在想是否有可能创建一个方法来向客户端公开类?

2 个答案:

答案 0 :(得分:1)

公开UserRights类的唯一方法是在Method Call

中返回它

使用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();
    }
}

答案 1 :(得分:0)

  

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

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

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

如果要公开类的实例,可以执行类似的操作。

[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;
}