2014-09-26 20 views
0

我想为ASP.Net MVC 6应用程序创建一个日志记录系统,它将日志消息链接到某些对象。在Asp.net视图中获取动态类型对象

例如:

  • 用户{0}购买{1}
  • 项{0}提供商{1},购买放置在由(2)

的进货哪个会地图:

  • 用户John苹果购买箱
  • 项目时钟与供应商卡西欧的进货,购买后由约翰尼

我至今是一个“登录”的方式接收一个IEnumerable和一个IEnumerable IDS

例如:

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

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

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

我需要做什么?

从“Log Model View”中,如何知道ANY模型(查询给定对象,并使用它的属性)知道它的类型(EnumObjectType)和它的ID?

其他细节

所有“模型”可以记录将实现包含两个方法的接口,它返回的链接指向这个类的一个给定的实例(ToLinkStructure如/用户/细节/ { 0})和ToLoggableString,它返回一个能够快速表示实例的字符串(例如“User:”+ this.username)

Thanks! 我试图给出所有可能跨越我的想法的细节,但是如果缺少某些东西,我会很乐意添加它

回答

0

如果我理解正确,您想要读取某个对象的属性,直到运行时才知道。这是可以做到这样的:

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

一个更好的选择是,因为你说你的类实现一个接口,是把该属性的界面,并且只接受实现这个接口的情况下,在你的记录功能。

public interface MyInterface{ 
    string Name { get; } 
}