首先,我有的DbContext類的擴展方法以保存日誌:擴展方法和繼承
public static int SaveChangesWithLogging(this DbContext context, NLog.Logger logger)
{
//logging
//[...]
return context.SaveChanges();
}
然後,我有從的DbContext繼承和一個類,其中我重寫的SaveChanges()
public class ChildDbContext : DbContext
{
public override int SaveChanges()
{
//other stuff
//[...]
//doesn't work, no definition for SaveChangesWithLogging (extension method not found, why ?)
return base.SaveChangesWithLogging();
//doesn't work, loop on SaveChanges by extension method and stack overflow as a result
return base.SaveChangesWithLogging();
}
}
我想調用基類的DbContext的調用SaveChanges(),但它調用ChildDbContext的調用SaveChanges()或我有一個循環,一個堆棧溢出...
什麼好SOLU重刑?
「我有一個循環和堆棧溢出......」什麼?你的循環在哪裏?或者你的意思是你有無盡的遞歸導致'StackOverflowException'?無論如何,你的問題似乎是XY-問題。你爲什麼從'SaveChanges'內部調用'SaveChanges'?這看起來像是一個破碎的設計。你不應該(也不能)指出在繼承鏈中調用哪種方法,它是最能派生的方法。做一些不同的事情會破壞面向對象的原則。 – HimBromBeere