将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
{
}
有人能帮我做下一步需要做的事情吗?我确信我已经做错了什么,但我不确定是什么。这真的可能吗?
服务向客户端公开方法(操作合约)。您的接口没有任何方法,因此没有什么可实现的(从服务的角度来看)。
你可以这样做:
[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
类的属性。