Я хочу создать файл Subject.cs
программно.Для этого, когда я искал в Интернете, я увидел, что могу использовать текстовые шаблоны T4.Теперь я хочу получить данные из файла JSON с помощью Json.NET и установить значения Root
в качестве свойства, например:
namespace Library
{
class Subject
{
public static int forensic_medicine { get; set; }
public static int family_law { get; set; }
public static int constitutional_law { get; set; }
public static int obligations_law { get; set; }
}
}
Вот содержимое файла JSON:
{
"Subjects": [
{
"Root": "forensic_medicine",
"Name": "Forensic Medicine",
"StrID": "FMD",
"RowID": 746
},
{
"Root": "family_law",
"Name": "Family Law",
"StrID": "FML",
"RowID": 1239
},
{
"Root": "constitutional_law",
"Name": "Constitutional Law",
"StrID": "CNL",
"RowID": 996
},
{
"Root": "obligations_law",
"Name": "Obligations Law",
"StrID": "OBL",
"RowID": 1672
}
],
"is_restart": 0,
"book_path": "D:\\Colin\\_books\\",
"thesis_path": "D:\\Colin\\_thesises\\",
"full_screen": false
}
Я думаю, я должен использовать классы SubjectList
и Subject
для чтения и получения данных из файла JSON.Для этого я использую следующие классы:
public class SubjectList
{
public List<Subject> Subjects { get; set; }
}
public class Subject
{
public string StrID { get; set; }
public string Name { get; set; }
public string Root { get; set; }
public int RowID { get; set; }
}
И, наконец, для получения данных я использую такой код:
var json = JsonConvert.DeserializeObject<SubjectList>(File.ReadAllText("D:\\Colin\\_test\\inf.json"));
В файле текстового шаблона (Subjects.tt
), коды здесь:
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="$(SolutionDir)Test\bin\Debug\Newtonsoft.Json.dll" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
namespace Library
{
public class Subject
{
<#
var json = JsonConvert.DeserializeObject<SubjectList>(File.ReadAllText("D:\\Colin\\_test\\inf.json"));
#>
}
}
Я получаю следующие ошибки, не делая ничего другого.
Compiling transformation: The name 'JsonConvert' does not exist in the current context
Compiling transformation: The type or namespace name 'SubjectList' could not be found (are you missing a using directive or an assembly reference?)
Я думаю, что мне нужно использовать SubjectList
и Subject
классы в файле Subjects.tt
, но я не знаю, как мне это сделать.Что еще более важно, как я могу создать файл Subject.cs
программно, без проблем?