我的系统中只有很少的模型类,每个模型都有另一个成员,但是所有模型的行为都是相同的-
例如,所有模型都是用户要求的以下格式的输入:
Hi, Please enter {MemberName} value as {MemberType}:
并将输入转换为MemberType。
因为这打算成为库,所以我希望在每个模型中我都可以在编译时访问其成员(或类似成员的成员),而不是通过myModel.get("memberName")
来访问,而可以通过myModel.memberName
或{ {1}}或myModel.get(modelEnum.MemberName)
或myModel.ListOfMember[0]
等。
我不需要在运行时添加或删除成员,只需创建一种在编译时添加它们的好方法,而无需将添加成员的所有代码更改为模型类。
您将如何设计它?
我使用C#。
谢谢,您可以提出英语修复建议。
答案 0 :(得分:2)
我的想法是使用lambda表达式以一种简单直观的方式访问属性信息数据(具有IntelliSense支持和所有可用的重构)。演示该方法的代码如下。
env_objs = ls();
sapply(env_objs,function(x) {
if(class(get(x)) == "data.frame") {
return(nrow(get(x)))
}
});
访问PropertyInfo的核心方法来自StackOverflow问题Retrieving Property name from lambda expression。