タグ

ブックマーク / blog.okazuki.jp (13)

  • PropertyChangedイベントの処理方法 - かずきのBlog@hatena

    INotifyPropertyChangedインターフェースでお馴染みのPropertyChangedイベントですが、これのイベントハンドラのコードが気に入らない。というか書いてて、ちょっとなんだかなぁと思ってしまいます。 例えば、以下のようなNameプロパティとAgeプロパティを持ったINotifyPropertyChangedインターフェースを実装したPersonクラスがあったとします。 public class Person : INotifyPropertyChanged { private string _name; public string Name { get { return _name; } set { if (Equals(_name, value)) return; _name = value; OnPropertyChanged("Name"); } } priv

    PropertyChangedイベントの処理方法 - かずきのBlog@hatena
  • SQL Server CE 4.0 + Entity Framework 4.1 = お手軽お試し環境 - かずきのBlog@hatena

    SQL Server Compact Edition 4.0も出てきたし、Entity Framework 4.1のRCも出てきたし、お手軽サンプルプログラムを組むときのメンドクサイ障壁がどんどんなくなってきました!!ビバCodeFirst!! ということで、CodeFirstさんはデフォだとSQL ServerさんにDB作ってくれるので、SQL Server CE 4.0にDB作ってくれるようにする方法をメモっておこうと思います。 Entity Frameworkをプロジェクトに追加 NuGetでサクッと出来ます。GUIから出来るといいのですが、どうもPackage Manager Consoleからやらないと怒られてしまいました。 PM> Install-Package -Project EFAndSQLCESample EntityFramework You are download

    SQL Server CE 4.0 + Entity Framework 4.1 = お手軽お試し環境 - かずきのBlog@hatena
  • JSON形式をC#のオブジェクトにシリアライズ・デシリアライズする - かずきのBlog@hatena

    最近Web APIでサポートされることが激しく多くなってるJSONですが、C#でも手軽に扱えるようになってます。 DataContractとかDataMember属性を使うと要素名とかまで指定できますが、属性とかつけなくても使うだけなら全然使えます。しかも使い方は簡単!ということで忘れないようにコード例だけ書いてメモっておきます。 namespace ConsoleApplication15 { using System; using System.IO; using System.Runtime.Serialization.Json; using System.Text; class Program { static void Main(string[] args) { // System.Runtime.Serialization.Json.DataContractJsonSerial

    JSON形式をC#のオブジェクトにシリアライズ・デシリアライズする - かずきのBlog@hatena
  • RESTでJSONなサービスをWCFで作ったり使ったりする - かずきのBlog@hatena

    最近RESTが格的に主流になりそうな感じですね。 SOAPでいい〜んだよSOAPでと思ってたら、以下のようなニュースとかも出てきたりして、ちょっと下火な感じがします。 ドアを閉じる WS-I - それが WS-* に意味するものは? ということでトレンドを追いかけるということと、どうせなら得意なC#でやっちゃえ!ということで今回はWCFでRESTでJSONなサービスを作る&使うことをやってみようと思います。下のような記事も出てるので、WCFでRESTやっておいて損はないでしょう。 将来のWCFは、RESTful ということで早速作っていきましょう。 プロジェクトの作成と実行方法の設定 まず、サービスを公開するためのWebアプリケーションを作成します。新規作成から「ASP.NET 空のWebアプリケーション」を作ります。余計なページとかは今回邪魔なのでシンプルに行きます。名前はRESTWc

    RESTでJSONなサービスをWCFで作ったり使ったりする - かずきのBlog@hatena
  • Viausl Studio 2010で自作コードジェネレータ - かずきのBlog@hatena

    コードの自動生成は、色々なところでされていると思います。Excelのマクロで作ったり、自分でせっせとコードを書いたり、LLな言語を使ってさくっと作ったり、OSSのテンプレートエンジンで作ったり etc... そんな中で、1つコードジェネレータを作るときの選択肢として追加しても良さそうな機能がVisual Studio 2010にあります。その名も「前処理されたテキストテンプレート」です。正直、この名前から何をするものかってさっぱりわかりませんが、コードジェネレータとかを作るときにもってこいの、デキル奴だったりします。 とりあえず、Hello worldから始めてみましょう。HelloCodeGeneratorという名前でコンソールアプリケーションを作成します。そこに「HelloPreTextTemplate.tt」という名前で「前処理されたテキストテンプレート」を作成します。 HelloP

    Viausl Studio 2010で自作コードジェネレータ - かずきのBlog@hatena
  • foreachでループのindexを知る方法 - かずきのBlog@hatena

    2018/01/05 追記 blog.okazuki.jp 文 久しぶりにおぉ〜〜!と思ったのでメモです。 http://mag.autumn.org/Content.modf?id=20100726164321 http://blogs.wankuma.com/rti/archive/2010/07/27/191691.aspx foreachで今何回目のループなのかを知りたいという願望は誰もが一度は胸に抱いたことがあると思います。 そういうときに、一時変数を準備するよりエレガントちっくな方法です。 ただ、一般的な書き方として認知されていない可能性は否めないので人がコードを見たときに何をしてるんだろう?と思ってしまうかもしれません。ここらへん、時間が解決してくれるかな。 やり方というのは、LINQのSelectメソッドを使う方法です。Selectメソッドには、なんと、インデックスを渡し

    foreachでループのindexを知る方法 - かずきのBlog@hatena
  • NUnitのカバレッジを取りたいことって無い? - かずきのBlog@hatena

    取りたくなったので調べてみました。因みに貧乏なので、Visual StudioのはExpressかSandardしか使えないため、コードカバレッジの機能は使えないのです・・・。 一昔前はNUnitと組み合わせてNCoverなるものを使うのが良かったみたいですが、有料化されてしまったらしいです。残念っ。 ということで、お金がかからないもので何か無いか探してみたら見つけたのが「PartCover」です。早速使ってみましょう。 ダウンロード/インストール ↓が公式のBlog?みたいなので、そこから最新版を落とします。 http://partcover.blogspot.com/ 2010/02/10現在は、最新が2.3.0.35109みたいなので、それを落としました。 インストールは、YESマンになればOKです。 GUIから使ってみる スタートメニューに、Gubka Bobという項目が追加される

    NUnitのカバレッジを取りたいことって無い? - かずきのBlog@hatena
  • イケテルINotifyPropertyChangedの実装の改善 - かずきのBlog@hatena

    2010年になってから6日もたって初のBlog更新になります。新年あけましておめでとうございます。今年も、マイペースですが試したことや、思ったこと、後ほんの少しの日常を綴っていこうと思います。 今年もよろしくお願いします。 さて、今回の記事のネタは以下の記事が元になってます。 ネタ元記事 いけてるINotifyPropertyChangedの実装は、結構遅かった http://d.hatena.ne.jp/okazuki/20091227/1261930083 意外というか予想より、はるかに遅かったINotifyPropertyChangedのPropertyChangedイベントの発行処理ですが、コメントに ななしさんのコメントから引用 -- senderはこれでも取得できるみたいです。 var sender = senderExpression.Value; デバッグ実行で表示される値

    イケテルINotifyPropertyChangedの実装の改善 - かずきのBlog@hatena
    rabbit2go
    rabbit2go 2010/01/09
  • DataTableからのデータ抽出方法の性能比較 - かずきのBlog@hatena

    ## 追記 .NET 6 版を書きました zenn.dev ## 文 注意)あまり真面目に測ってません 参考情報 当然っちゃ当然だけどDataTableとか使いようによっては遅い 当然っちゃ当然だけどDataTableとか使いようによっては遅い その2 今日も色々DataTableからデータを抽出(検索)する方法を比べてみました。前回よりも調べる対象をひろげて、DataViewも使ったりしてみました。 では、さっくりとやってみましょう。 ダミーデータ作成メソッド // ダミーデータの入ったDataTableを作るメソッド private static DataTable Create(int rowCount, int columnCount) { var result = new DataTable("DummyTable"); // ダミー列の作成 COLUMN_0 〜 COLUMN

    DataTableからのデータ抽出方法の性能比較 - かずきのBlog@hatena
  • いけてるINotifyPropertyChangedの実装は、結構遅かった - かずきのBlog@hatena

    前に紹介した、コードの字面上いけてる感じのINotifyPropertyChangedの実装ですが、結構内部で色々やってるので遅いんだろうな〜となんとなく思ってました。 INotifyPropertyChangedのいけてる実装 http://d.hatena.ne.jp/okazuki/20091214/1260803280 ということで、今日時間をはかってみました。実験したコードは以下のようなコードです。 /// 前に紹介したイケテル実装 public class IketeruEmp : INotifyPropertyChanged { private string _name; public string Name { get { return _name; } set { _name = value; PropertyChanged.Raise(() => Name); // 素

    いけてるINotifyPropertyChangedの実装は、結構遅かった - かずきのBlog@hatena
  • INotifyPropertyChangedのいけてる実装 - かずきのBlog@hatena

    もう何度目かになりますが、今までで一番イケテルと思った実装を見つけたので紹介します。ただ、元ネタのHPを忘れてしまった・・・orz やり方としては簡単です。これまでのINotifyPropertyChangedを実装したベースクラスを継承するという方法とも違うし、プロパティ名を文字列で渡すなんて、何か嫌だという問題もばっちり解決してるというナイスな方法です。 どうするかというと、PropertyChangedEventHandlerを拡張するという方法です。結構Expressionクラスとか駆使してるので、性能的には数が増えるとどうだろうという心配はあります・・・。 ということで、百聞は一見にしかずということなので見てみましょう。PropertyChangedEventHandlerを拡張するPropertyChangedEventHandlerExtensionsクラスを作成します。 p

    INotifyPropertyChangedのいけてる実装 - かずきのBlog@hatena
    rabbit2go
    rabbit2go 2009/12/15
  • NPOI入門してみた - かずきのBlog@hatena

    C#やVBでExcelを出力するために、POIの.NET版が無いか探してみたら、NPOIというものを見つけたので試してみます!! まず、CodePlexのNPOIのサイトからバイナリリリースをダウンロードします。ダウンロードしたら、コンソールアプリケーションをNPOIEduという名前で作って、ダウンロードしたDLLを参照に追加します。 とりあえず、超適当なデータを作り上げるコードを書いてみました。 using System; using System.IO; using System.Linq; using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; namespace NPOIEdu { class Program { static void Main(string[] args) { // Excelのブックを作成 var book = new

    NPOI入門してみた - かずきのBlog@hatena
  • toStringとかを生成してくれるプラグイン - かずきのBlog@hatena

    今日名前を完全に忘れてたので備忘録。 Commonsを使って系はすぐみつかったけど、toStringしたいだけなのにCommonsなんて大げさチック。 そんなときのためにCodeSugar http://sourceforge.net/projects/codesugar/

    toStringとかを生成してくれるプラグイン - かずきのBlog@hatena
  • 1