0

ログ メッセージを特定のオブジェクトにリンクする、ASP.Net MVC 6 アプリケーション用のログ システムを作成したいと考えています。

例えば:

  • ユーザー {0} が {1} を購入しました
  • アイテム {0} はプロバイダー {1} で補充されました。購入者は (2) でした

これは次のようにマッピングされます:

  • ユーザー John Apple が Box を購入しました
  • アイテム クロックはプロバイダー Casio で補充され、Johnny が購入しました

私がこれまでに持っているのは、IEnumerable と IEnumerable id を受け取る「ログ」メソッドです。

例えば:

  • EnumObjectType.User:2
  • EnumObjectType.Product:1
  • ...

この配列をデータベースに保存し、読み取り、列挙型に変換するためのすべてのコードが既にあります。ただし、アプリケーションの「ビュー」部分を作成する方法がわかりません。

つまり、Log.Message (インスタンス) を次のように変換します User {0} purchased {1}User <a href="#">John Apple</a> purchased <a href="#">Box</a>

私が必要なものは何?

「ログ モデル ビュー」から、そのタイプ (EnumObjectType) とその ID を知っている任意のモデル (特定のオブジェクトをクエリし、そのプロパティを使用する) の「名前」プロパティを取得するにはどうすればよいですか?

追加の詳細

ログに記録できるすべての「モデル」は、そのクラスの特定のインスタンス (例: /User/Details/{0}) へのリンクを返す ToLinkStructure と、迅速に応答する文字列を返す ToLoggableString の 2 つのメソッドを含むインターフェースを実装します。インスタンスを表します (例: "User: " + this.username)

ありがとう!頭に浮かぶ可能性のあるすべての詳細を提供しようとしましたが、何か不足している場合は喜んで追加します

4

1 に答える 1

0

私の理解が正しければ、実行時までわからないタイプのオブジェクトのプロパティを読み取りたいと考えています。それは次のように行うことができます:

var value = myObject.GetType().GetProperty("name").GetValue(myObject, null);

クラスがインターフェースを実装していると言っているので、より良いオプションは、そのプロパティをインターフェースに入れ、ロギング関数でこのインターフェースを実装するインスタンスのみを受け入れることです。

public interface MyInterface{
    string Name { get; }
}
于 2014-09-26T12:13:16.233 に答える