0

我想为 ASP.Net MVC 6 应用程序创建一个日志系统,它将日志消息链接到某些对象。

例如:

  • 用户 {0} 购买了 {1}
  • 项目 {0} 已通过提供商 {1} 进货,购买由 (2)

这将映射到:

  • 用户 John Apple 购买了 Box
  • 项目时钟由供应商卡西欧进货,购买由约翰尼下达

到目前为止,我有一个“日志”方法,它接收一个 IEnumerable 和一个 IEnumerable id

例如:

  • 枚举对象类型。用户:2
  • EnumObjectType.Product:1
  • ...

我已经拥有了将这些数组保存在数据库中、读取它们、将它们转换为枚举等的所有代码。但是,我不知道如何制作应用程序的“视图”部分。

即转换一个Log.Message(一个实例),例如: User {0} purchased {1}User <a href="#">John Apple</a> purchased <a href="#">Box</a>

我需要什么?

从“日志模型视图”中,如何获取任何模型的“名称”属性(查询给定对象,并使用它的属性)知道它的类型(EnumObjectType)和它的 ID?

额外细节

所有可以记录的“模型”都将实现一个包含两个方法的接口,一个返回指向该类的给定实例的链接的 ToLinkStructure(例如 /User/Details/{0})和一个返回快速字符串的 ToLoggableString表示一个实例(例如“用户:” + 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 回答