我对 WCF 比较陌生,并且使用以下两种方法创建了一个服务:
[ServiceContract]
public interface IDB
{
[OperationContract]
DbResponse<Student> AddStudent(string pnr, string firstName, string lastName, string userName, string email, string cls);
[OperationContract]
DbResponse<List<Student>> FindStudent(string searchString);
}
DbResponse 是一个通用类:
[DataContract]
public class DbResponse<T>
{
[DataMember]
public DbStatus Status { get; set; }
[DataMember]
public string Message { get; set; }
[DataMember]
public T Data { get; set; }
}
其中 DbStatus 是一个枚举:
[DataContract]
public enum DbStatus
{
[EnumMember]
Ok,
[EnumMember]
Warning,
[EnumMember]
Failed
};
这工作正常,除了在客户端,因为将通用属性添加到 DbResponse,我不能再使用以下内容:
string filter = "Foo";
DBClient dbc = new DBClient();
WebInterface.Services.DbResponse response = dbc.FindStudent(filter);
相反,根据 Intellisense,我必须使用看起来很奇怪(而且丑陋)的类型:
WebInterface.Services.DbResponseOfArrayOfStudentL1_PcKk2u response = dbc.FindStudent(filter);
如果有人能解释为什么会发生这种情况以及我是否(以及如何)可以使用“更清洁”的类型名称,我将不胜感激。