public interface ICommunicationLoggService
{
[OperationContract]
bool SaveLog(Employee emp);
}
我需要将上述方法作为泛型,以便它可以将任何类对象作为参数而不是特定的Employee对象。
就像我有3个班级
class Employee
{
}
class Student
{
}
class Address
{
}
现在,当我打电话给saveLog()
时,它应该基于班级。
我不擅长英语,希望任何人都能理解这个问题并为我提供解决方案..
答案 0 :(得分:3)
经过一些研究,我得出的结论是,SOA似乎是Camilo Terevinto在这些界面中不使用泛型的最佳选择。
因此,最简单的解决方案似乎为每种实体类型都有一个单独的日志方法。
public interface ICommunicationLoggService
{
[OperationContract]
bool SaveLog(Employee emp);
[OperationContract]
bool SaveLog(Studend emp);
[OperationContract]
bool SaveLog(Address emp);
}
您还可以使用贝司课程来录制"记录"类型。
public interface ICommunicationLoggService {
[OperationContract]
bool SaveLog(Loggable loggable);
}
public class ComunicationLoggerService : ICommunicationLoggService {
public bool SaveLog(Loggable loggable) {
return false;
}
}
public class Loggable { }
public class Employee : Loggable { }
public class Studend : Loggable { }
public class Address : Loggable { }
public class Example
{
public void Foo()
{
Employee employee = new Employee();
ICommunicationLoggService loggService = new ComunicationLoggerService();
loggService.SaveLog(employee);
}
}
您可以使用泛型来实现所需的行为。
你不应该在WCF中使用泛型。我从一开始就没有意识到这一点。
感谢WSDL的解释,为什么使用泛型是坏的:
问题是Ext.plugin.Responsive。您无法序列化您不喜欢的类型 知道
public interface ICommunicationLoggService
{
[OperationContract]
bool SaveLog<TEntity>(TEntity emp);
}