基于设计模型的编译时间系统

时间:2018-07-31 05:31:46

标签: c# oop design-patterns model

我的系统中只有很少的模型类,每个模型都有另一个成员,但是所有模型的行为都是相同的-

例如,所有模型都是用户要求的以下格式的输入: Hi, Please enter {MemberName} value as {MemberType}: 并将输入转换为MemberType。

因为这打算成为库,所以我希望在每个模型中我都可以在编译时访问其成员(或类似成员的成员),而不是通过myModel.get("memberName")来访问,而可以通过myModel.memberName或{ {1}}或myModel.get(modelEnum.MemberName)myModel.ListOfMember[0]等。

我不需要在运行时添加或删除成员,只需创建一种在编译时添加它们的好方法,而无需将添加成员的所有代码更改为模型类。

您将如何设计它?

我使用C#。

谢谢,您可以提出英语修复建议。

1 个答案:

答案 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