CRUD REST API-世卫组织“;创造;C#obejct本身?

CRUD REST API-世卫组织“;创造;C#obejct本身?,c#,wcf,crud,C#,Wcf,Crud,我有一个基于WCF的C#CRUD REST api,可以在Schedule对象上运行。正如您所期望的,有创建、更新和删除的方法 我的问题是Schedule对象包含TriggerInfo子对象。如果您只是调用构造函数,那么您实际上是在调用代理的构造函数,而真正的构造函数永远不会被调用,因此子对象不会被初始化 WCF发出的代理将TriggerInfo作为字段,但它始终将为null,因为“real”类中的构造函数逻辑从未被调用 换句话说,当客户端创建一个C#“Schedule”对象时,它实际上是在创建

我有一个基于WCF的C#CRUD REST api,可以在Schedule对象上运行。正如您所期望的,有创建、更新和删除的方法

我的问题是Schedule对象包含TriggerInfo子对象。如果您只是调用构造函数,那么您实际上是在调用代理的构造函数,而真正的构造函数永远不会被调用,因此子对象不会被初始化

WCF发出的代理将TriggerInfo作为字段,但它始终将为null,因为“real”类中的构造函数逻辑从未被调用

换句话说,当客户端创建一个C#“Schedule”对象时,它实际上是在创建一个真正的Schedule类的代理,而该代理对必须初始化任何东西一无所知

那么在这种鸡和蛋的情况下,谁创建了客户机可以“填写”的C#“Schedule”对象呢

我认为C#客户机可以创建一个Schedule对象,填写所有属性并将其传递给CreateSchedule()api,它就可以工作了。不那么容易

如果我创建了一个大的、平面的单片类,其中所有TriggerInfo属性都是Schedule对象上的属性,那么这是可行的,但是它不是很整洁,特别是如果您有多个子类的话


我可以在我的API上公开一个ScheduleFactory对象,它知道如何创建一个,但我不知道这是否是一种有效的方法

如果需要任何重要的初始化,不要在客户端创建Schedule对象-只需在WCF服务中添加一个新的或create方法,并在服务器端执行即可。或者,您可以使用new Schedule()客户端,获取一个具有大量空属性的新代理实例,并在Save方法的服务器端使用合理的默认值填充这些属性。

我向服务API添加了一个CreateSchedule()调用,该调用返回一个正确初始化的空计划。这似乎奏效了。但是,调用方是否应该将唯一ID传递给Create调用?比如,如果我的计划名称是唯一的值,它是否应该为create调用指定一个?或者返回的对象应该是完全空的,然后您必须填写唯一的ID并在之后进行更新?