是否可以声明基本已知类型并允许所有派生类型被传输?
[ServiceContract]
public interface IService
{
[OperationContract]
[ServiceKnownType(typeof(BaseMsg))]
object[] Do(BaseMsg msg);
}
是否可以在IService接口中不使用属性声明每个派生类型的情况下完成此操作?
最佳答案
不是直接的,但是如果您不介意创建非标准服务(可能只能由另一个.NET应用程序使用),则可以使用KnownTypesAttribute使用this constructor。
这使您可以创建一个具有方法的Web服务,该服务可以动态地告诉它哪些类型可用于传输。然后,您可以使用反射来反映加载的程序集中的所有类型,这些类型从您的类型派生并添加它们。但这必须在服务器和客户端上都进行,以便他们彼此理解。
关于c# - C#WCF抽象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5806017/