使用其他变量/属性在编译时动态创建类

时间:2019-07-10 14:28:52

标签: c# entity-framework asp.net-core .net-core

我正在为其他实体(类)的属性制作一个“翻译器”类。此类将在许多地方使用,并且可以在编译之前真正确定(硬编码)。该过程如何自动化?

例如, 这些是实体类

public class Teacher
{
 public int Id {get;set;}
 public string Name {get; set;} //Lorem
 public List<Student> Students {get; set;}
 public Teacher() => Students = new List<Student>();
}

public class Student
{
  public int Id {get; set;}
  public int Name {get; set;}  //Ipsum
  public string Cls {get; set;} // will store grade/class/standard the student is in, in this case class 10
}

这是在没有翻译时使用它们的方式:

var k = string.Format("Teacher {0} has tought student {1} who is in class {2}.",teacher.Name, teacher.Students[0].Name, teacher.Students[1].Cls)

示例输出为:

  

老师Lorem教过10年级的学生Ipsum。

生成的翻译器类如下:

public class Translator
{
 public int Id {get; set;}
 public string Teacher_Id {get; set;} // doesn't matter
 public string Teacher_Name {get; set;} //teacher or mentor
 public string Teacher_Student {get; set;} //student or mentored
 public string Student_Id {get; set;} //doesn't matter
 public string Student_Name {get; set;} // student or menties
 public string Student_Cls {get; set;}  // class or standard
}

用于翻译字符串的代码如下:

var k = string.Format("{3} {0} has {4} {5} {1} who is in {6} {2}.",teacher.Name, teacher.Students[0].Name, teacher.Students[1].Cls, translator.Teacher_Name, translator.Teacher_Student, translator.Student_Name, translator.Student_Cls)

不同的地区/学校对班级和教师的约定不同。

  
      
  1. Lorem老师教了10年级的Ipsum学生。
  2.   
  3. Moror Lorem曾指导过标准10的受训生Ipsum。
  4.   

我有一个所有变量名的列表,这里有翻译器类(在ICollection或json中),唯一的麻烦是在编译时创建它。

我真的很想知道这种方式是否可行,以及是否还有其他更好的方法。我们将Vue用于前端,并为用户提供创建/自定义其语言的选项。我有另一种方法,我只是认为如果可以这样做,那将更快,更清洁。

0 个答案:

没有答案