创建用于映射功能的调度程序

时间:2012-07-11 06:35:00

标签: c# .net design-patterns

我有一系列不同的对象类型(大约15种不同类型),它们来自第三方系统。 对于每种类型,我需要进行不同的转换。 我最初的想法是使用转换函数创建一些接口,并为每个类型创建一个类并运行它自己的实现。 但是像这样我需要创建一个非常大的if语句来检查对象类型并进行映射。

我正在尝试在这里学习一些新东西,所以我的问题是还有其他方法来处理这种情况吗?

3 个答案:

答案 0 :(得分:2)

您是否考虑过使用Visitor的可能性?

如果将访问者模式与dynamic的使用结合起来,您可以在没有任何ifswitch语句的情况下获得非常简单的实现,或者必须手动创建类型字典代表或类似的替代方案。

使用dynamic可以避免实现设计模式的“ accept ”部分,我认为这对您有用,因为这些是您无法控制的外部类型。

意思是,你创造了这样的东西:

public interface IVisitor
    {
        void Visit(OneType element);
        void Visit(AnotherType element);
        ....
    }

您实现该访问者,稍后可以使用以下方法调用该实现:

visitor.Visit((dynamic)objectToTransform);

您可能必须处理有关Type没有适当重载的例外情况。

这将解决与为每种类型执行单独方法相关的问题部分。 现在,根据您对每个特别需要做的事情,如果您需要自动属性映射,那么AutoMapper可能非常有用。

答案 1 :(得分:0)

您可以创建类型和转换的查找,类似于Java Front Controller pattern.

答案 2 :(得分:0)

我不确定这是否是您想要的,但请查看AutoMapper(或其他地图制作者)。它允许您轻松定义规则以将类型映射到其他类型。