2011-07-22 36 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

不,第一個不正確。擴展方法必須在頂級靜態非通用類中定義。

此外,我建議的命名慣例類型參數相符時,太:

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

完美 - 謝謝! –

相關問題