Как я могу заставить T поддерживать DataContractJsonSerializer и не внедрять ISerializable везде? - PullRequest
1 голос
/ 23 января 2011

Я работаю над этим методом расширения и пытаюсь ограничить T так, чтобы метод не применялся к КАЖДОМУ объекту ... только к тем, с которыми DataContractJsonSerializer хорошо работает

public static string ToJSONString(this object obj)
    {
        using (var stream = new MemoryStream())
        {
            var ser = new DataContractJsonSerializer(obj.GetType());

            ser.WriteObject(stream, obj);

            return Encoding.UTF8.GetString(stream.ToArray());
        }
    }

1 Ответ

1 голос
/ 23 января 2011

Варианты, доступные внутри дженериков ... Ограничены. Одним из обходных путей является использование отражения (обычно в статическом ctor-коде общего типа) для проверки с помощью отражения, но это может быть излишним. Не могли бы вы добавить where T : class, new(), что может сильно ограничить его типами "entity" / DTO.

...