У меня есть библиотека f # с некоторыми значениями, которые я хочу сериализовать в C# с помощью json. С регистрами у меня не было проблем, но у меня возникают ошибки, когда я пытаюсь сериализовать алгебраические типы данных.Serialize f # алгебраические типы данных
Например, можно сказать, что это модуль f #, и я хочу сериализовать t1.
module Module1=
type Tree = Leaf | Branch of Tree * int * Tree
let t1 = Leaf
В C# я следующее:
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Module1.Tree));
StreamWriter writer = new StreamWriter(@"c:\test");
serializer.WriteObject(writer.BaseStream, Module1.t1);
writer.Close();
Я имеющий эту ошибку (на испанском языке, потому что моя визуальная студия не на испанском языке: S)
«Нет С.Е. Espera типо эль 'ns.Module1 + Tree + _Leaf' con el nombre de contrato de datos 'Module1.Tree._Leaf: http://schemas.datacontract.org/2004/07/ns'. Agregue los tipos no conocidos estáticamente a la lista de tipos conocidos (por ejemplo, usando el atributo KnownTypeAttribute o agregándolos a la lista de tipos conocidos que se pasa a DataContractSerializer). "
мой перевод: «Тип„ns.Module1 + дерево + _Leaf“не ожидался с именем контракта данных 'Module1.Tree._Leaf: http://schemas.datacontract.org/2004/07/ns. Добавьте неизвестные типы статически в список известных типов (например, используя атрибут KnownTypeAttribute или добавляя их в список известных типов, которые передаются DataContractSerializer). "
Любые идеи, как их решить?
спасибо, что помогло мне решить эту конкретную ошибку, теперь у меня есть новая: P – hiena
Или вы можете применить атрибут '[]', чтобы напечатать 'Tree', как намечено сообщение об ошибке. –