Get a dynamic type object in an Asp.net View
我想为 ASP.Net MVC 6 应用程序创建一个日志系统,它将日志消息链接到某些对象。
例如:
- 用户 {0} 购买了 {1}
- 项目 {0} 已通过提供商 {1} 进货,购买由 (2)
将映射到:
- 用户 John Apple 购买了 Box
- 项目时钟由 vendor卡西欧进货,购买由约翰尼下达
到目前为止,我有一个"日志"方法,它接收一个 IEnumerable 和一个 IEnumerable ids
例如:
- 枚举对象类型。用户:2
- EnumObjectType.Product:1
- ...
我已经拥有了将这些数组保存在数据库中、读取它们、将它们转换为枚举等的所有代码。但是,我不知道如何制作应用程序的"视图"部分。
即转换一个Log.Message(一个实例),例如:
我需要什么?
如何从"日志模型视图"获取任何模型的"名称"属性(查询给定对象,并使用其属性)知道其类型(EnumObjectType)及其 ID?
其他细节
所有可以记录的"模型"都将实现一个包含两个方法的接口,一个返回指向该类的给定实例的链接的 ToLinkStructure(例如 /User/Details/{0})和一个返回快速表示实例的字符串(例如"用户:"this.username)
谢谢!
我试图给出所有我能想到的细节,但如果有什么遗漏我会很高兴补充它
如果我理解正确,您想读取对象的属性,该对象的类型直到运行时才知道。可以这样完成:
1 | var value = myObject.GetType().GetProperty("name").GetValue(myObject, null); |
更好的选择是,正如您所说,您的类实现了一个接口,就是将该属性放在接口中,并且只接受在您的日志记录函数中实现该接口的实例。
1 2 3 | public interface MyInterface{ string Name { get; } } |