2013-06-04 2 views
0

Как преобразовать мой Class1 или класс объекта в String, а затем преобразовать String в тип, который я могу использовать для создания экземпляра?C# - класс для строки и обратно (нет XML)

Нечто подобное:

// class to string: 
Type type1 = myObject.GetType(); 
string text = type1.ToString(); 

// and then back 
Type type2 = Type.Parse(text); 
// type2 should reflect the same type as type1 

Чтобы сделать это с помощью перечислений очень легко и приятно. Поэтому я хотел бы иметь это с классами. Я также хочу, чтобы избегал с использованием сериализации и XML. Я не хочу сериализовывать объекты, но JUST, чтобы запомнить класс, который мне нужно создать для объекта.

+2

почему бы не использовать XML? – Giedrius

+0

Почему вы хотите это сделать в первую очередь? – wterbeek

+0

Итак, ваша цель - сохранить имя CLASS в строке, а не сериализовать или сохранить данные в классе instanced? : S –

ответ

2

Если это только Type вы хотите, то:

Type type = ... 
string s = type.AssemblyQualifiedName; // and store s 
Type andBackAgain = Type.GetType(s); 
+0

Спасибо. Это более или менее то, что мне нужно. – Bitterblue

4

Если сериализация не требуется, может быть полезен метод Activator.CreateInstance. Существует ряд перегрузок - некоторые работают напрямую со строками (представляющими типы), а другие - с объектами типа.

Конечно, может быть удобным (или более расширяемым), чтобы использовать сериализатор, который также хранит информацию о типе.

+0

Это лучший способ пойти. –

+0

Другой возможностью может быть просто запоминание объекта Type. Почему туда и обратно? – Aphelion

+0

@Aphelion Не знаю: D – user2246674

Смежные вопросы