Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

System.Xamlを使ったシリアライズ・デシリアライズ

$
0
0

上から順に、単純なデシリアライズ。ローカルアセンブリを指定したデシリアライズ。文字列へのシリアライズ。文字列以外のストリームやテキストライターへのシリアライズです。

using System;
using System.IO;
using System.Reflection;
using System.Xaml;

namespace ConsoleApplication5
{
    class Program
    {
        staticvoid Main(string[] args)
        {
            // 読み込み
            {
                // XAML
                var xaml = @"<Person xmlns='clr-namespace:ConsoleApplication5;assembly=ConsoleApplication5' Name='Tanaka' />";
                // 
                var r = new XamlXmlReader(new StringReader(xaml));
                // 読み込み
                var p = XamlServices.Load(r) as Person;
                // 確認
                Console.WriteLine(p.Name);
            }

            // 読み込み2
            {
                // XAML(LocalAssemblyを指定してるのでxmlnsにassembly指定がいらない)
                var xaml = @"<Person xmlns='clr-namespace:ConsoleApplication5' Name='Tanaka' />";
                // 
                var r = new XamlXmlReader(new StringReader(xaml), new XamlXmlReaderSettings
                {
                    LocalAssembly = Assembly.GetExecutingAssembly()
                });
                // 読み込み
                var p = XamlServices.Load(r) as Person;
                // 確認
                Console.WriteLine(p.Name);
            }

            // 書き込み
            {
                var xaml = XamlServices.Save(new Person { Name = "kimura" });
                Console.WriteLine(xaml);
            }
            // 書き込み2
            {
                var w = new StringWriter();
                XamlServices.Save(w, new Person { Name = "kimura" });
                Console.WriteLine(w.ToString());
            }

        }
    }

    // XAMLで保存するオブジェクトpublicclass Person
    {
        publicstring Name { get; set; }
    }
}

Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>