Я пытаюсь сериализовать (и позже десериализовать) объект команды на строку (желательно с помощью JavaScriptSerializer). Мой код компилируется, однако, когда я сериализую свой объект команды, он возвращает пустую строку Json, т. Е. «{}». Код показан ниже.Сериализация/Deserializing Command Object
Цель состоит в том, чтобы сериализовать командный объект, поместить его в очередь, а затем десериализовать его позже, чтобы он мог быть выполнен. Если решение может быть достигнуто с помощью .NET 4, тем лучше.
ICommand
public interface ICommand
{
void Execute();
}
Пример команды
public class DispatchForumPostCommand : ICommand
{
private readonly ForumPostEntity _forumPostEntity;
public DispatchForumPostCommand(ForumPostEntity forumPostEntity)
{
_forumPostEntity = forumPostEntity;
}
public void Execute()
{
_forumPostEntity.Dispatch();
}
}
Сущность
public class ForumPostEntity : TableEntity
{
public string FromEmailAddress { get; set; }
public string Message { get; set; }
public ForumPostEntity()
{
PartitionKey = System.Guid.NewGuid().ToString();
RowKey = PartitionKey;
}
public void Dispatch()
{
}
}
Пустой Пример Строка
public void Insert(ICommand command)
{
// ISSUE: This serialization returns an empty string "{}".
var commandAsString = command.Serialize();
}
Метод Сериализация Расширение
public static string Serialize(this object obj)
{
return new JavaScriptSerializer().Serialize(obj);
}
Любая помощь будет оценена.
«ICommand» содержит только один метод. какой результат сериализации вы ожидаете? – andri
Скорее всего (хотя я и не использовал сериализатор Java), что вам нужно пометить ваши классы, которые наследуют от 'ICommand', с помощью' [Serializable] 'и помечать каждое свойство в этом классе как' XmlElement'. – MoonKnight
Строковое представление DispatchForumPostCommand или другого объекта, который наследуется от ICommand. После того, как объект снят с очереди и десериализован, я хочу вызвать команду Execute, которая содержит некоторую базовую информацию, которая поможет завершить выполнение. – Bern