2011-07-22 10 views
2

ジェネリックのためのクラス拡張を書くための例をいくつか見てきました。私は例としてAutoMapperを使用するつもりです。優れている拡張機能を一般的に記述する正しい方法は何ですか?

1)

public static class Extensions<Src, Tgt> 
{ 
    public static Tgt TransferData(this Src source) 
    { 
     AutoMapper.Mapper.CreateMap<Src, Tgt>(); 
     return AutoMapper.Mapper.Map<Src, Tgt>(source); 
    } 
} 

2)

public static class Extensions2 
{ 
    public static Tgt TransferData<Src, Tgt>(this Src source) 
    { 
     AutoMapper.Mapper.CreateMap<Src, Tgt>(); 
     return AutoMapper.Mapper.Map<Src, Tgt>(source); 
    } 
} 

?どうして?最初のものは正しいですか?

答えて

7

いいえ、最初のものは正しくありません。拡張メソッドは、トップレベルのstatic 非汎用のクラスで定義する必要があります。

また、私はあまりにも、型パラメータの命名規則に準拠することをお勧めしたい:

public static class Extensions2 
{ 
    public static TTarget TransferData<TSource, TTarget>(this TSource source) 
    { 
     AutoMapper.Mapper.CreateMap<TSource, TTarget>(); 
     return AutoMapper.Mapper.Map<TSource, TTarget>(source); 
    } 
} 
+0

パーフェクト - 感謝を! –

関連する問題