2017-06-01から1ヶ月間の記事一覧

スライダー等からの大量リクエストの、最新値のみを別スレッド処理する

C#

下記のような、スライダーの存在するアプリケーションを作成し、スライダーの値が変わる度に何かの処理をするとします。 もしこの処理が重たい場合、普通に実装しただけでは、UIのレスポンスが悪くなってしまいます。 slider.ValueChanged += (s, e) => Thre…

Functional Reactive Programming + MVVMでのUserControl --- C# WPF

下記記事にてFRPライブラリのSodiumとWPFを連携させてみました。 Functional Reactive Programming + MVVM --- C# WPF - 何でもプログラミング今回はUserControlでも利用できるよう実装してみたいと思います。 アプリケーションコード いつも通り、カウンタ…

Functional Reactive Programming + MVVM --- C# WPF

下記記事にて、Functional Reactive ProgrammingライブラリであるSodiumとWPFを連携させました(F#) SodiumでFunctional Reactive Programming (F#) --- WPF連携 - 何でもプログラミング今回は、C#にてSodiumとWPFを連携させてみたいと思います。 アプリケ…

Elm Architectureを利用したMVVMでのUserControl --- C# WPF

下記記事にて、C#でElm Architectureを利用してWPFアプリケーションを作成しました。 Elm Architectureを利用したMVVM --- C# WPF - 何でもプログラミング今回はElm ArchitectureでUserControlを実装してみたいと思います。F#版での実装は下記記事を参照して…

Elm Architectureを利用したMVVM --- C# WPF

下記記事にてF#でElm ArchitectureをWPFに導入してみました。 F#でWPF --- Elm Architectureを利用したMVVM - 何でもプログラミング今回はC#で近いものを実装してみたいと思います。F#の方ではサポートしたModel→ViewModelの変換は省略していますので、必要…

C# Immutableオブジェクト 導出項目のキャッシュ機能

C#

例として下記のようなVector2クラスを考えます。Lengthプロパティは、呼び出される毎に計算を行っています。処理が軽い場合は特に問題ありませんが、導出に時間がかかるプロパティは結果をキャッシュしてあるほうが好ましいです。今回はキャッシュを行う機能…

ImmutableオブジェクトのJSONシリアライズ、デシリアライズ(C#)

C#

今回はNewtonsoft.Jsonを利用して、Immutableオブジェクトをシリアライズ、デシリアライズしてみたいと思います。.NetにはDataContractJsonSerializerが標準で用意されていますが、DataContract、DataMember属性を付加する必要があり、動作のカスタマイズが…

ネストしたImmutableオブジェクトの更新(C#)

C#

C#(7.0)でImmutableクラスを作成する場合、下記のような記述になります。 public class Person { public int Age { get; } public string Name { get; } public Person Child { get; } public Person(int age, string name, Person child) { Age = age; Na…

WPF --- Bindingで配列をObservableCollectionに変換

現状、ItemsControlのItemsSourceに通常の配列をバインドした際、配列を新しくする度にコントロールが全て再作成されます。通常の配列の代わりにObservableCollectionをバインドすることにより、変更箇所のみViewが更新されるようになります。(要素の追加で…