将Get / Set类转换为WCF服务

时间:2013-08-14 10:13:33

标签: c# wcf class service-reference

我有一个班级:

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
    {

    }

有人可以帮我解决下一步的需求吗?我确定我已经做错了但是我不确定是什么。这实际上是可能的吗?

1 个答案:

答案 0 :(得分:2)

服务向客户端公开方法(操作合同)。您的界面没有任何方法,因此无需实施(从服务角度来看)。

你可以这样做:

[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作为输入或返回类型 - 这是进入服务的内容,而不是{{1的属性}。class。