У меня есть несколько открытых статических WebMethods, к которым я обращаюсь через Javascript (напрямую), обычно через jQuery. Это работает, и я доволен результатами (и тем, что мне не нужно иметь дело с фреймворком AJAX).
Что я хотел бы сделать, так это определить свой собственный объект mock-JSON для передачи между JS и ASP (это веб-проект .NET 2.0, CS и VB, и я также ссылаюсь на 3.5 не веб-проект, когда мне нужно 3,5 услуги). Но у меня куча проблем:
- Я не могу указать [DataContract], он говорит, что я могу пропустить сборку.
- Я не могу понять, как использовать интерфейс ISerializable, и при этом я не знаю, решит ли он мою проблему или нет. В частности, добавление вещей через GetObjectData, похоже, не приводит к приседу, когда я использую JavaScriptSerializer; Я всегда получаю "{}".
- Пометка моего класса [Serializable], похоже, ничего не делает.
- Я не знаю, какие еще есть варианты.
Код:
[Serializable]
public class MyClass : ISerializable
{
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("test", "contents");
}
}
// in my ASP page
MyClass tmp = new MyClass();
JavaScriptSerializer s = new JavaScriptSerializer(); // System.Web.Script.Serialization.JavaScriptSerializer, to be specific.
s.Serialize(tmp) // "{}" whether here, or by returning a MyClass instance from my WebMethod function (as Object, MyClass, etc.)
Я довольно новичок в CS / VB и .NET, поэтому прости меня, если я упускаю что-то до боли очевидное, и поэтому я не могу найти что-нибудь в Интернете ^^;
Итак, мой прямо сформулированный вопрос: как я могу сделать свои собственные классы сериализуемыми в ASP с WebMethods?