Сериализация вложенного интерфейса - PullRequest
0 голосов
/ 31 мая 2010

как я могу сериализовать этот класс?

public class MyClass    {
    IInterface MyProperty { get; set;}
}

Ответы [ 4 ]

1 голос
/ 31 мая 2010

Вам нужно добавить установщик в MyProperty, так как правила сериализации Xml требуют, чтобы сериализация могла иметь возможность обратного обхода, т.е. она должна иметь возможность получить свойство для сериализации, а затем установить свойство для десериализации.

1 голос
/ 31 мая 2010

Как сказал chibacity, вам нужно добавить сеттер в свойство. Вам также необходимо добавить атрибут XmlInclude к свойству, чтобы указать возможные типы реализации, в противном случае XmlSerializer не будет знать, какой тип создавать при десериализации

0 голосов
/ 31 мая 2010

XmlSerializer не может сериализовать интерфейсы.

Если вы знаете конкретные типы, с которыми вы будете иметь дело заранее, тогда вы можете использовать подход XmlInclude. Если нет, то было несколько дискуссий о том, как справиться с этим:

0 голосов
/ 31 мая 2010

Сделайте класс, который реализует IInterface Serializable, как обычно, и все будет работать.

...