使用扩展方法将一个类映射到另一个类是否合适

Cha*_*son 4 c# extension-methods

刚刚用扩展方法弄湿我正在开发一些映射逻辑,将应用程序Invoice转换为Quickbooks Invoice.认为拥有.Convert()扩展方法可能是个好主意.

public static QBInvoice Convert(this InvoiceHeader importedInvoice)
Run Code Online (Sandbox Code Playgroud)

转换只是一个类到另一个类的字段映射.但后来我在某处读到扩展方法是扩展原始类,而不是将其转换为另一个类.因此我要问的原因.我在技术上知道我能做到,但这是最佳实践合规还是禁忌?

she*_*nku 5

我个人喜欢使用显式强制转换:

public class InvoiceHeader
{
   public static explicit operator QBInvoice(InvoiceHeader invoice)
   {
      return new QBInvoice {}; // do your mapping
   }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以投下它:

var qbInvoice = (QBInvoice) invoiceHeader;
Run Code Online (Sandbox Code Playgroud)