将Get/Set类转换为WCF服务

本文关键字:WCF 服务 转换 Get Set | 更新日期: 2023-09-27 18:27:40

我有一个类:

namespace BugNETLibrary
{
    public class NewUser
    {
        public string UserName { get; set; }
        public int UserRole { get; set; }
        public string LoweredUserName { get; set; }
    }
}

我正在尝试将此类转换为WCF服务,以便在我的项目中引用。

我现在有一个接口:

[ServiceContract]
    public interface INewUser
    {
        string UserName { get; set; }
        int UserRole { get; set; }
        string LoweredUserName { get; set; }
    }

[DataContract]
public class GetNewUser
{
    string userName;
    int userRole;
    string loweredUserName;
    [DataMember]
    public string UserName
    {
        get { return userName; }
        set { userName = value; }
    }
    [DataMember]
    public int UserRole
    {
        get { return userRole; }
        set { userRole = value; }
    }
    [DataMember]
    public string LoweredUserName
    {
        get { return loweredUserName; }
        set { loweredUserName = value; }
    }
}

我不确定这是否正确,但我不确定该向继承接口的服务类添加什么,所以我只有

public class NewUser : INewUser
    {
    }

有人能帮我做下一步需要做的事情吗?我确信我已经做错了什么,但我不确定是什么。这真的可能吗?

将Get/Set类转换为WCF服务

服务向客户端公开方法(操作合约)。您的接口没有任何方法,因此没有什么可实现的(从服务的角度来看)。

你可以这样做:

[ServiceContract]
public interface INewUser
{
    [OperationContract]
    UserInfo CreateNewUser(string userName);
}

然后在实现类中,您将得到:

public NewUser : INewUser
{
    public UserInfo CreateNewUser(string userName)
    {
        return new UserInfo() {
                   UserName = "John Doe",
                   UserRole = 5,
                   LoweredUserName = "john doe"
                   };
    }
}

UserInfo将是根据原始代码用于表示信息的类,标记为数据契约:

[DataContract]
public class UserInfo
{
    [DataMember]
    public string UserName { get; set; }
    [DataMember]
    public int UserRole { get; set; }
    [DataMember]
    public string LoweredUserName { get; set; }
}

这是一个基于上面代码的琐碎示例,向您展示了如何将所有代码结合在一起。

无论如何

您真正应该做的是查看现有的库,将功能封装在WCF服务中,并将NewUser类标记为数据契约。看起来您关注的是数据,您应该首先关注功能。

换句话说,当前库中的哪些方法使用NewUser作为输入或返回类型,这是进入服务的内容,而不是NewUser类的属性。