代码之家  ›  专栏  ›  技术社区  ›  Andreas Niedermair

是否有可能以更清晰的方式重申这些通用约束?

  •  1
  • Andreas Niedermair  · 技术社区  · 15 年前

    public class MyFunkyTable : DbObject
    {
        // this class will be generated
    }
    
    public class MyFunkyDomainObject : DomainObject
    {
        // this class will be custom-made
    }
    
    public class MyFunkyMapper : Mapper<MyFunkyTable, MyFunkyDomainObject>
    {
        // this will be custom mapping code due to wired abstraction and ... "supercool" db-system
    }
    

    一般来说,我们做以下工作:

    MappingHelper<MyFunkyTable, MyFunkyMapper, MyFunkyDomainObject>.GetSingle(...);
    

    MyFunkyMapper 已指定泛型..)

    有没有什么方法可以做到:

    MappingHelper<MyFunkyMapper>.GetSingle(..);
    

    编辑:

    2 回复  |  直到 15 年前
        1
  •  3
  •   Mark Seemann    15 年前

    你为什么不做点像这样的事呢

    var item = mappers.Get<MyFunkyMapper>().GetSingle(...);
    

    这是假设 Mapper<TTable, TDomain> 有一个 GetSingle<TDomain>(...) 方法。如果是这种情况,类型推断将找出GetSingle的泛型参数,即使您没有编写它。

    AutoMapper 为了映射的目的而不是自己滚动?

        2
  •  1
  •   Vilx-    15 年前

    我想你不能。编译器可以通过查看函数的参数来推断类型参数,但仅此而已。由于不传递任何参数,因此将无法使用类型推断。

    using TheMapper = MappingHelper<MyFunkyTable, MyFunkyMapper, MyFunkyDomainObject>;
    

    然后是代码

    TheMapper.GetSingle();
    

    另一个想法-而不是 MappingHelper ,为什么不将所有这些内容添加到 Mapper<T1, T2>

    MyFunkyMapper.GetSingle();