Я бы реализовал некоторые дополнительные методы сериализации согласно этой статье . Если вы хотите стать модным, вы можете создать настройку в свойствах ваших проектов. Этот параметр определит, использует ли ваш класс csv или сериализацию по умолчанию. Затем вы получите доступ к нему с помощью методов, показанных здесь . Подумайте об использовании статического конструктора для чтения настроек приложений и создания логического значения, доступного для вашего кода сериализации. Код Vlads выглядит великолепно, просто подключите его к своему коду. Также вы можете рассмотреть другие, возможно, более желательные способы изменить ваше поведение сериализации.
Или создайте интерфейс с именем 'SerializeAsCSV' и используйте его примерно так:
// Частичное содержимое MyCoolClass.csv:
public class MyCoolClass : ISerializeAsCSV, IDisposable
{
protected static bool serializesToCSV = false;
static MyCoolClass()
{
serializesToCSV =
(typeof(MyCoolClass).GetInterface("GrooveySoft.Shared.Interfaces.ISerializeAsCSV") == null)
? false
: true;
}
public MyCoolClass(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
{
// your stuff here
}
public void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
{
// your stuff here
}
}
// содержимое файла ISerializeAsCSV.cs
using System.Runtime.Serialization;
namespace GrooveySoft.Shared.Interfaces
{
/// <summary>
/// indicates that implementor will serialize to csv format
/// </summary>
public interface ISerializeAsCSV : ISerializable
{
}
}
Это должно начать. , , Я не собирал и не проверял это. , но вы получите общее представление.