Я в основном хочу знать, как написать простую программу, которая проанализирует все файлы классов в папке и внесет некоторые изменения. В частности, мне нужно взять файл класса, который выглядит так:
public class Something {
//somecode
}
И сделайте так, чтобы это выглядело так:
public class Something {
public static CollectionBase<Something> GetAll() {
return new CollectionBase<Something>(DataLayer.Something.GetAll());
//somecode
}
И я в основном должен сделать это примерно с 200 файлами (среди нескольких других модификаций, но если я могу сделать это, я могу адаптировать его для решения других изменений).
Я не очень хорошо знаком с C #, но думаю, что в псевдокоде это будет примерно так:
- Откройте каждый файл .cs в папке
- Прочтите каждую строку, пока не найдете совпадение регулярного выражения для: "public class Something"
- Поместите совпадение "Something" в строку типа tempS
- Вставьте несколько новых строк под ним, например: "public static CollectionBase‹ "+ tempS +"> GetAll () "
Затем запишите новый файл в новую папку.
Будем очень признательны за любые предложения о том, как написать что-то подобное. Я изучаю C # всего около 3-4 месяцев, и может быть немного сложно синтаксически переваривать все инструкции, которые люди дают друг другу. TIA! -Эван
РЕДАКТИРОВАТЬ: Итак, я уверен, что любой гуру регулярных выражений справился с этим за секунды, но я все равно собираюсь опубликовать здесь свое решение, которое было простой строкой регулярного выражения Найти и заменить:
Найти: открытый класс (\ w *): SimpleObjectBase {
Заменить: [NamedType ("$ 1")] \ r \ n открытый класс $ 1: SimpleObjectBase, ICCPSystemType {\ r \ n \ r \ n #region Static \ r \ n \ r \ n общедоступный статический CollectionBase GetAll () {\ r \ n return new CollectionBase (CCP.Data. $ 1.GetAll ()); \ r \ n} \ r \ n \ r \ n #endregion
А вот пример его работы:
Перед - пространство имен CCP.Logic {
///<summary>
///This class represents each TypeBabySexByULS in the database
///</summary>
[NamedType("TypeBabySexByULS")]
public class TypeBabySexByULS : SimpleObjectBase {
... /// на другой код
После - пространство имен CCP.Logic {
///<summary>
///This class represents each TypeBabySexByULS in the database
///</summary>
[NamedType("TypeBabySexByULS")]
public class TypeBabySexByULS : SimpleObjectBase, ICCPSystemType {
#region Static
public static CollectionBase<TypeBabySexByULS> GetAll() {
return new CollectionBase<TypeBabySexByULS>(CCP.Data.TypeBabySexByULS.GetAll());
}
#endregion
/// Надеюсь, это поможет кому-то другому! -E