Пару раз я обнаруживал, что хочу взять состояние объекта и сделать его постоянным.
Например. Я проектирую пользовательский интерфейс, который отображает информацию, скажем, из вызова базы данных.
и я просто хочу получить образец данных, чтобы поиграть, чтобы я мог видеть, как все будет выглядеть.
Допустим, у меня есть:
public interface IPerson
{
string Name{get;}
string Age {get;}
...
}
public class Person
{
string Name{get; set}
string Age {get; set}
...
}
и некоторый метод, который говорит вызов базы данных или что-либо еще, чтобы загрузить его.
В этом примере для простоты скажем, что он загружает его из файла CSV:
для этого примера файл содержит: «Mrs McKenzy, 56, ..»
IPerson Load(string fileName)
{
var text = File.ReadAllText(filename);
var parts = text.Split(",");
return new Person()
{
Name = parts[0],
Age = Int32.Parse(parts[1]),
...
}
}
из этого я хочу сгенерировать пример моего класса: (как файл .cs)
public class SamplePerson : IPerson
{
string Name{get {return "Mrs McKenzy"}}
string Age {get {return 56}}
...
}
Единственный способ убедиться в этом - это сериализовать объект (например, в XML, чтобы я мог видеть, что в нем), и затем мой SamplePerson десериализует объект в его конструкторе, чтобы инициализировать себя.
Теперь это не плохое решение.
Но я полагаю, что было бы лучше, если бы я мог просто "Serialise to C #".
Кажется, что-то, что можно собрать без слишком особых проблем с отражением,
поэтому мне интересно, есть ли какая-то существующая библиотека для этого.
(Если нет, я думаю, это может быть интересный проект, если я когда-нибудь получу скуку)