まず、私がログに保存する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を()を呼び出すか、私はループとスタックオーバーフローを持っている...
が良いソリュー何ですか?
"ループがあり、スタックがオーバーフローしています..."あなたのループはどこですか?または、あなたは 'StackOverflowException'を引き起こす無限の再帰を持っているということですか?とにかくあなたの問題はXY問題のように思えます。なぜ 'SaveChanges'内から' SaveChanges'を呼び出すのですか?これは壊れたデザインのようです。継承チェーンでどのメソッドを呼び出すべきかを指定してはいけません(そして、できません)。違うことをすることは、OOP原則を破るでしょう。 – HimBromBeere