C# 当从不同方法返回时,如何要求同一对象上的不同字段?
我将有多个WCF组件方法返回一个公共对象。在某些情况下,字段A、B、C、D将被要求为非空,但在其他情况下,字段B、F、G、Q可能被要求为非空 我想向创建这些方法的人指出,任何特定方法都需要哪些字段。我还想强制执行这些要求 我可能无法更改公共对象,即它由不同的团队定义 有没有一种模式或策略可以让这变得容易C# 当从不同方法返回时,如何要求同一对象上的不同字段?,c#,design-patterns,oop,C#,Design Patterns,Oop,我将有多个WCF组件方法返回一个公共对象。在某些情况下,字段A、B、C、D将被要求为非空,但在其他情况下,字段B、F、G、Q可能被要求为非空 我想向创建这些方法的人指出,任何特定方法都需要哪些字段。我还想强制执行这些要求 我可能无法更改公共对象,即它由不同的团队定义 有没有一种模式或策略可以让这变得容易 谢谢 您需要一个适配器对象,它知道如何处理两种(所有)情况,或者(可能)更好,需要多个适配器,每个适配器都知道如何处理自己的情况 如果您不能控制对象,那么您就不能在其内部强制执行任何内容,您所能
谢谢 您需要一个适配器对象,它知道如何处理两种(所有)情况,或者(可能)更好,需要多个适配器,每个适配器都知道如何处理自己的情况 如果您不能控制对象,那么您就不能在其内部强制执行任何内容,您所能做的就是在您自己的代码中适应它。因此,另一个团队仍将返回公共对象。您要做的是在代码中创建适配器对象,以验证所需字段等 比如说,
CommonObjectFromWCFGuys cofwg = wcf.SomeMethod( someParam );
AdapterForABCD abcd = new AdapterForABCD( cofwg );
abcd.ValidateRequiredFields( );
SomeInternalBusinessMethod( abcd );
然后,您的“SomeInternalBusinessMethod”可以要求特定的字段,但您不能强制其他团队返回这些字段,您可以在使用它们之前在代码中检查它们。您需要一个适配器对象,它知道如何处理这两种(所有)情况,或者(可能)更好,多个适配器,每个适配器都知道如何处理自己的情况 如果您不能控制对象,那么您就不能在其内部强制执行任何内容,您所能做的就是在您自己的代码中适应它。因此,另一个团队仍将返回公共对象。您要做的是在代码中创建适配器对象,以验证所需字段等 比如说,
CommonObjectFromWCFGuys cofwg = wcf.SomeMethod( someParam );
AdapterForABCD abcd = new AdapterForABCD( cofwg );
abcd.ValidateRequiredFields( );
SomeInternalBusinessMethod( abcd );
然后,您的“SomeInternalBusinessMethod”可以要求特定的字段,但您不能真正强制其他团队返回这些字段,您可以在使用它们之前在代码中检查它们。根据yetapb的说法,您可以有两个或多个适配器对象,它们都实现相同的接口。这样,当您调用SomeMethod返回一个需要字段(A、B、C、D)的对象时,您将其传递给一个适配器对象。当您调用需要字段(B、F、G、Q)的其他方法时,您将实例化另一个适配器类 如果这两种方法都实现了一个公共interce,那么您可以在接口上放置类似IsValid的方法,并且只有在检查IsValid之后才在代码中本地引用接口。然后,每个适配器类将为所需字段实现自己的逻辑 在本地,您将永远不会直接引用代码中的适配器类别,而是引用接口
除此之外,您是服务的消费者-您不能保证返回对象在逻辑上做您认为它是的事情(在某些级别上,您应该围绕这一事实进行防御性编程),超出了操作合同。这里的基本思想是,这种方法为对象添加了一层薄薄的验证。根据yetapb的说法,您可以有两个或多个适配器对象,它们都实现了相同的接口。这样,当您调用SomeMethod返回一个需要字段(A、B、C、D)的对象时,您将其传递给一个适配器对象。当您调用需要字段(B、F、G、Q)的其他方法时,您将实例化另一个适配器类 如果这两种方法都实现了一个公共interce,那么您可以在接口上放置类似IsValid的方法,并且只有在检查IsValid之后才在代码中本地引用接口。然后,每个适配器类将为所需字段实现自己的逻辑 在本地,您将永远不会直接引用代码中的适配器类别,而是引用接口
除此之外,您是服务的消费者-您不能保证返回对象在逻辑上做您认为它是的事情(在某些级别上,您应该围绕这一事实进行防御性编程),超出了操作合同。这里的基本思想是,这种方法为对象添加了一层薄薄的验证。如果我的要求是这些方法中的每一个都必须返回相同的公共对象,那么适配器对象有什么帮助?如果我的要求是这些方法必须返回相同的公共对象,那么适配器对象有何帮助?它在哪里合适?