Создание класса динамически во время компиляции с использованием других переменных / реквизитов - PullRequest
0 голосов
/ 10 июля 2019

Я делаю класс "переводчик", для свойств других объектов (классов).Этот класс будет использоваться во многих местах и ​​действительно может быть решен (жестко запрограммирован) до времени компиляции.Как автоматизировать этот процесс?

Например, это классы сущностей

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)

Пример выходных данных для этого:

Учитель Лорем научил ученика Ипсума, который находится в классе 10.

Созданный класс переводчика выглядит следующим образом:

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. Учитель Лорем обучил ученика Ипсума, который находится в 10-м классе.
  2. У наставника Лорема есть наставник Ипсум, который находится в стандарте 10.

У меня есть список всех имен переменных, которые будут там, есть класс переводчика (в ICollection или json), единственная проблема заключается в его создании во время компиляции.

Мне бы очень хотелось узнать, возможно ли это таким образом, и есть ли другие лучшие подходы к этому.Мы используем Vue для внешнего интерфейса и даем пользователям возможность создавать / настраивать свой собственный язык.У меня есть альтернативный подход, я просто думаю, что если это возможно, то это будет намного быстрее и чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...