У меня есть небольшая библиотека, где пользователь может установить и получить свойства с помощью общего интерфейса. Таким образом, пользователь может установить каждый объект, который он или она хочет.Сделать класс сериализуемым во время выполнения
Чем я могу сохранить свойства в файловой системе, используя BinaryFormatter
. С родными типами, такими как string
или DateTime
или ... все работает нормально. Но если пользователь имеет пользовательский класс как
class User
{
public string Name { get; set; }
}
, чем я получаю исключение, что class
лицо не рынок, как Serializable
. Если я напишу атрибут [Serializable]
о моем классе, он просто отлично работает.
Мой вопрос сейчас: Есть ли способ, которым я могу объявить класс как Serializable
во время выполнения? Так что, если пользователь забыл это сделать, я могу попробовать?
Код для сериализации выглядит следующим образом:
public void Save(string saveFilePath)
{
byte[] binaryData;
using (var memoryStream = new MemoryStream())
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, AllProperties);
binaryData = memoryStream.ToArray();
}
File.WriteAllBytes(saveFilePath, binaryData);
}
Я уверен, что вы не можете, см. Http://stackoverflow.com/questions/129285/can-attributes-be-added-dynamically-in-c Было бы плохой практикой, я бы сказал, – derape
вы можете использовать библиотеки, такие как http://www.sharpserializer.com/en/index.html или xmlserialisation. но, как сказал derape, это плохая практика, чтобы сделать это – user1519979
Хорошо. Спасибо. Чем пользователь должен будет взять на себя ответственность за это. – Tomtom