特定のソフトウェア設計状況で何をすべきかわかりません。ちょうど解決のためのインターネットを捜したが、満足のいく答えを見つけなかった。だから私はあなたの専門知識を知りたいだけでなく、何が最善のものかを知りたい。 私はいくつかの抽象レイヤーを持つシステムを持っています。ユーザーに表示されるAPIは、コンパクトな数のメソッドを持つ単純なクラスです。これらのメソッドを呼び出すと、抽象化全体を通してメソッド呼び出しの雪崩が引き起こされます。その途中である種の決断が下されるでしょう。この方法の各要素は、メッセージシステムを介してその宣言の理由とその理由を誰にでも伝えることができます。システムはまた、すべてのコールとデシジョンを記録しています。これは非常に重要です。むしろ最も重要です。正直言ってそれが核心の問題です。デザインパターントラッキングメソッド呼び出し/呼び出し側
問題は:WHOが特定のメソッドを呼び出したことを知りたい。だから私は何とか手を差し伸べることができ、すべての抽象化は知っている: "そう、この男はそれを望んでいる。だから私はログすることができます:この男はそれを望んでいた。
私はこれが必要だと信じている理由は、他のシステムがそのAPIを使用できるからです。おそらくGUIがコマンドをドロップしようとしているかもしれません。おそらくHTTPで駆動されるリモートコントローラかもしれません。
私は、システムがWHOに基づいて脱退するようにしたくないです。私はそれが私がすべてのthouseの層を抽象化することを意図したものの絶対的な反対であることを知っています。私はちょうど適切に記録したい。 WHOはWHATをしたかったのです。
今は木の木が見えません。私は、オブジェクトインスタンスのようなチケットをAPIに渡しました。システムはそのチケットをIDで登録しています。 APIユーザーは、コマンドを呼び出すときにチケットを渡して、システムが呼び出した人を知るようにする必要があります。
よく質問してください。 メソッドの呼び出し元を追跡/識別するためのパターンはありますか?
編集: この状況で使用されている一般的な問題ですが、C#!これまでのところ...私の現在のソリューションは魅力のように働いている
public void SomeMethod(string name, [CallerMemberName] string callerName = null)
{
Console.Writeline($"SomeMethod was called from {callerName}");
...
}
ありがとうございました。これでメンバー名がわかりますが、それはまずは良いステップです。特にこれ以上の条件は必要ないためです。それらの言葉をちょうど追加する...かなり良い。 それでも問題は、GuiがメソッドQWERTYCallMethodを介して呼び出し、純粋な事故によって同じメソッドがWebコントローラからAPIを呼び出すために使用されることです。 – kaymcray