【发布时间】:2023-03-09 18:04:01
【问题描述】:
显然我的教育失败了,因为我没有意识到 C# 中的方法不能被序列化。 (很高兴知道。)
我正在尝试创建一个返回我创建的简单类的 WCF 服务。问题是这个简单的类包含我想要公开的方法,而我的服务的调用者将无法访问它们(假设它们没有包含类声明的 .dll)。
public class Simple
{
public string Message { get; set; }
private const string _Hidden = "Underpants";
public string Hidden
{
get { return _Hidden; }
}
public string GetHidden()
{
return _Hidden;
}
}
我设置了一个 WCF 服务(我们称之为 MyService)来返回我的 Simple 类的一个实例。令我沮丧的是,我只恢复了部分课程。
public void CallService()
{
using (var client = new MyService.Serviceclient())
{
Simple result = client.GetSimple();
string message = result.Message; // this works.
string hidden = result.Hidden; // this doesn't.
string fail = result.GetHidden(); // Underpants remains elusive.
}
}
是否有任何类型的解决方法,我可以在我的类上设置一个属性或方法,任何调用我的服务的人都可以访问这些属性或方法?如何处理仅存在于服务中的类中设置的常量或其他方法?
【问题讨论】:
-
理想情况下,您可以创建一个合同,也就是一个简单的 POCO 类,它只是公共属性并将其序列化。有一些其他方法可以根据您拥有的任何内部业务逻辑/数据填充 POCO。
-
您的用户调用您的 WCF 来执行您的逻辑,而不是让逻辑返回以在他们的系统上执行。执行您的逻辑(在服务器上)通常会导致数据(并且只有数据)被发送回客户端,以便以它需要的任何方式进行处理。
-
这两点都非常有效,谢谢。 @cgotberg,您让我的思想朝着正确的方向发展。非常感谢!
标签: c# wcf serialization