我想将我的许多表更改为查询表。

我有类型和方法。我要配对。

if (propertyType == typeof(bool) || propertyType == typeof(bool?))
DoBool(propertyType);

if (propertyType == typeof(DateTime) || propertyType == typeof(DateTime?))
DoDateTime(propertyType);

if (propertyType == typeof(Guid) || propertyType == typeof(Guid?))
DoGuid(propertyType);


我必须创建一个Dictionary<Type, Action>()吗?还是最优雅的方式做到这一点?

您能给我一些建议,从哪里开始或在哪里找到解决方案?

最佳答案

由于这比单纯的查找更多的是控制代码流,所以我可能会使用一种面向对象的方法,并将每个“处理程序”的代码放在单独的类中(在基类中包含一些普通的东西)。

您可以创建一个通用界面,例如

public interface ITypeHandler {
    void HandleType(Type type);
}


...,然后根据需要将处理程序的实现放入Dictionary<Type, ITypeHandler>类型的字典中,或者可以在接口上具有一个属性,以揭示其处理的类型,并从(可能是依赖注入)处理程序列表中进行选择这个性质。

这增加了好处,例如关注点分离,可测试性等。

(请注意,* Handler不是一个很好的名字,您将必须根据所涉及的场景创建一个更好的名字。)

10-08 01:27