読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

宣言的にクラスを宣言しT4 Templateでコードを生成する

T4 C#

タイトルが何を言っているんだおまえは?といった感じですが、ちょっと思いついたのでやってみました。後悔はしていない。 今回やる事 今回は、クラスや名前空間などの最小限の構造を定義することでアプリケーションコードのどんがらを作ってくれるものを最…

使い捨てのT4テンプレート活用法

T4 C#

ということで、MSDNのT4テンプレートのドキュメントを見たのは、ちょろっと使おうと思ったからです。 コード生成とテキスト テンプレート (T4) 単調な繰り返しを伴うコードを書くのは苦痛でしかありません。私が尊敬する上司の人は、これを田植えと言ってま…

T4 TemplateのMSDNドキュメント

T4

コード生成とテキスト テンプレート (T4) めもめも。

自作コードジェネレータを作ろう

C# T4

先日、ViewModelのコード生成を行うT4 Templateを作りました。そこで使ったテクニックを説明したいと思います。 前処理されたテキストテンプレート 以前にも紹介した前処理されたテキストテンプレートを使用しています。これはT4 Templateで書いたものを生成…

T4 Templateにもインテリセンスとか欲しいよね?

T4

ということでフィードバック書いてみました。 https://connect.microsoft.com/VisualStudioJapan/feedback/details/634891/t4-template無料のアドオンとかあるにはあるけど・・・Expressで入るか怪しい気がするし、勝手にアドオン入れれない環境もあると思う…

T4 TemplateでViewModelを生成する その3「Commandにも対応」

前のやつにCommandも定義出来るように追加してみました。 namespace VMDsl { using System.Collections.Generic; // 名前空間 public class NSDef { public NSDef() { this.Classes = new List<ClassDef>(); } public string NS { get; set; } public List<ClassDef> Classes { g</classdef></classdef>…

T4 TemplateでViewModelを生成する その2「DSLちっくにする」

前回たたき台を作ったMVVM生成のためのT4 Templateですが正直あんまり楽になった気がしないです。何故かというと、クラスのメタデータの定義が非常に冗長な感じになってたからだと思います。 1プロパティしかないクラスを定義するだけで、20行以上も書かな…

T4 TemplateでViewModelを生成する その2「DSLちっくにする」

前回たたき台を作ったMVVM生成のためのT4 Templateですが正直あんまり楽になった気がしないです。何故かというと、クラスのメタデータの定義が非常に冗長な感じになってたからだと思います。 1プロパティしかないクラスを定義するだけで、20行以上も書かな…

T4 TemplateでViewModelを作る

ちょいと作ってみた。 これをひな形にやっていけばいかなぁ。もっといい方法とかあるよ!って人は教えてください。 ClassDef.ttinclude とりあえずクラスのメタデータを定義するためのクラス群 <#+ // 名前空間 class NSDef { public string NS { get; set; …

Viausl Studio 2010で自作コードジェネレータ

C# T4

コードの自動生成は、色々なところでされていると思います。Excelのマクロで作ったり、自分でせっせとコードを書いたり、LLな言語を使ってさくっと作ったり、OSSのテンプレートエンジンで作ったり etc... そんな中で、1つコードジェネレータを作るときの選…

サービス参照で追加したクラスにIEditableObjectを実装させるT4 Template

Visual Studio 2010でサービス参照を追加したときに作成されるクラスは、INotifyPropertyChangedまで実装してくれてる。 (VS2008のは未確認。実装してたっけか?)このT4 Template使えばIEditableObjectが動くように出来るかも。 リフレクション使ってるので…