Cha*_*son 4 c# extension-methods
刚刚用扩展方法弄湿我正在开发一些映射逻辑,将应用程序Invoice转换为Quickbooks Invoice.认为拥有.Convert()扩展方法可能是个好主意.
public static QBInvoice Convert(this InvoiceHeader importedInvoice)
Run Code Online (Sandbox Code Playgroud)
转换只是一个类到另一个类的字段映射.但后来我在某处读到扩展方法是扩展原始类,而不是将其转换为另一个类.因此我要问的原因.我在技术上知道我能做到,但这是最佳实践合规还是禁忌?
我个人喜欢使用显式强制转换:
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)