C#

ReSharper 6.1

今日、Visual Studioを起動するとアップデートが来ていたので、早速インストールした。 ReSharper :: What's New in ReSharper 6 結構いろいろと変わってるんだな。 ReSharper SDKなんてのもあるんだ。

BindableApplicationBar (Phone7.Fx)

Phone7.FxのBindableApplicationBarだが、残念ながら使えなかった。 まず第一に、XAML上、PhoneApplicationPage#ApplicationBarプロパティにセットできないということ。※もう一つは、他のコンテナ(Grid)上に配置しても何故か私の環境では表示できないという…

Phone7.Fx

Windows Phone 7のApplication BarはVisual Studioが用意するテンプレートに最初からサンプルコードとして埋め込まれており、コメントを外すことですぐに使える。用意されたApplicationBarにチェックとキャンセルのアイコンを配置した例(Blend 4) ただ、この…

Mandarine-wp7

これまでの日記でWindows Phone 7に関して書いてきたコード片を全てGoogle Codeにアップすることにした。Mandarine-wp7 - library framework for Windows Phone 7 | Google Code Hosting"Mandarine"というプロジェクト名はWindows Phone 7.5のコードネームが…

ローテーション可能なIsolatedStorageTargetを書く

やることはこのFileTargetクラスからログのアーカイブとローテーションの機能を抜き出してIsolatedStorageTargetクラスにポートすることである。 ということで早速やってみた。ただし、FileTargetのアーカイブ/ローテーション機能をIsolatedStorageTargetに…

NLogで例外とスタックトレースをログに採取する

NLog – Advanced .NET Logging NLogにも大分慣れてきた。設定ファイル(NLog.config)もかなり考えられており、内部のパーサと拡張構文(${〜})によるプロパティの設定も柔軟性がある。 例えばログターゲット(Target)のレイアウトプロパティだがフォーマット文…

IsolatedStorageTargetでログローテーションする

前回までのエントリでIsolatedStorageにログを出力できるようにはなったが、単一のファイルをログを出力し続けるとサイズがどんどんと膨らんでいくことになるので、なんらかのログのアーカイブ戦略を立てなくてはならない。 ログのアーカイブとローテーショ…

NLog Target Extension(その4)

次回ではNLogを使って実際にログを出力してみよう。 using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) { using (Stream stream = new IsolatedStorageFileStream("Mandarine.log" , FileMode.Append, FileAccess.Writ…

NLog Target Extension(その3)

NLog.config <nlog> <extensions> <add assembly="Mandarine"/> </extensions> <targets> <target name="target1" type="IsolatedStorage" layout="${longdate} ${callsite} ${level} ${message}"/> </targets> <rules> <logger name="*" minlevel="Debug" writeTo="target1" /> </rules> </nlog> #if !WINDOWS_PHONE strin…

NLog Target Extension(その2)

ソースコードを調べたたのだが(やっぱりソースコードが無いとね)、Windows Phoneでは要素の要素 assembly属性には対応していないようだ。 無念。 NLog.Config.XmlLoggingConfiguration.cs #if !WINDOWS_PHONE : string assemblyName = addElement.GetOptiona…

NLog Target Extension

NLogのTargetをIsolatedStorageFileにしたくて調べていたのだが、中々上手く行かん。 他のアセンブリからターゲットクラスを呼び出す時点でエラーが出てしまう。 NLog.config <nlog> <extensions> <add assembly="Mandarine"/> </extensions> <targets> </targets></nlog>

NLog

Androidで言うところのLogCatと同じようにアプリケーションのログを採取したいがWindows Phoneにはそのようなものは無いようだ。 ASP.NETやWindowsFormsではLog4Netを使用していたが、Log4Netはちょっと重めなのでもう少し軽くて簡単に使えるロガーを探して…

T4 Text TemplateによるViewModelクラスの生成 その5

さて少し空いてしまったが、残った処理をテンプレートに実装していこう。前回はクラスの定義部までを生成した。 MyViewModel_Generated.cs (自動生成結果) using System; using System.Windows; using System.Windows.Controls; using System.ComponentModel…

T4 Text TemplateによるViewModelクラスの生成 その4

前回は属性(アノテーション)の定義が出来たので、話をテンプレートに戻そう。次に行うのはこの属性をマーカとして使い、生成対象のクラスを見つけることだ。1. ソリューション中のプロジェクトを列挙する 2. プロジェクト中のクラス情報を列挙する 3. Proper…

T4 Text TemplateによるViewModelクラスの生成 その3

さて、ViewModelの自動生成の続きだ。おさらいになるが、自動生成するViewModelは対象のネームスペース、クラスを決定しなくてはならない。そして生成するプロパティ(名前、型、デフォルト値)を決めたい。そのためにはテンプレート(ジェネレータ)側に何らか…

PhoneApplicationPageを使わずページ遷移する

Windows Phone 7でのXAMLページの遷移、通常であればPhoneApplicationPageのコンテキストで以下のように書くだろう。 PhoneApplicationPage.NavigationServiceプロパティを使う NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative)); これ…

謎のTypeLoadException その2

自身で定義したViewModelにIDataErrorInfoを実装すると発生するTypeLoadExceptionだが、結局原因が分らない。そもそもSystem.ComponentModel.IDataErrorInfoは参照できるものの、元々WPFで使用してきたインタフェースでありWindows Phone 7のProfileでは使え…

謎のTypeLoadException

ViewModel生成のテストをしているのだが、原因不明のエラーに悩まされている。 以下のXAMLにより直接ViewModelのインスタンスを生成してビューのDataContextにセットしているのだが、 Page1.xaml(抜粋) このXAMLをVisual Studio 2010のデザイナで読ませると…

T4 Text TemplateによるViewModelクラスの生成 その2

前回のエントリで書いた通り、T4 Text TemplateによるViewModelの生成のためのジェネレータを作成していく。なお、テンプレート自身はViewModelGenerate.ttという名前とし、共通で使うであろう関数群はUtil.ttという別な名前のテンプレートに定義して、ViewM…

T4 Text TemplateによるViewModelクラスの生成

さて、T4 Text TemplateによりJava APTとほぼ同様のことができることが解ったので、早速プロセッサ(というかジェネレータ)を作ることにしよう。実装の手順は以下のようになるだろう。1. Visual Studio ソリューション情報から全てのプロジェクト情報を列挙 2…

ViewModelの自動生成を考える

以前、Androidアプリで恒常的に使用するXMLからPOJO DTOへマッピングするクラスをAPT(Annotation Processing Tool)を利用して自動生成するエントリを書いたことがある。APTでテンプレートメソッドパターンを生成する その1 APTでテンプレートメソッドパター…

ViewModel

Silverlight4の制限はあるものの、MVVMの実装において重要な責務を担うコマンドバインディングが実現できることが解ったので、次はデータバインディングが実現できるかどうか検証してみよう。 といってもデータバインディング機構そのものはWindowsPhone7で…

RelayCommand

WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン - MSDN マガジン February 2009MVVMパターンで使用するコマンドの実装を考えた場合、いろいろなやり方を考えることができると思うが、コマンドの機能毎にICommandの実装を用意する煩雑さとそも…

WPFとSilverlight

WindowsPhone7の一般的なアプリケーションはSilverlightベースで開発するのだが、このSilverlightが、特にフレームワーク上のSilverlightとWPFの差が門外漢には良く解らない。WPF との互換性 - Silverlight SilverlightはWPFのサブセットだと理解していたの…

只では転ばない

DevQuizのスライドパズルは見事に玉砕した訳だが、その解答をC#で書くのには理由があった。 一つは暫く触っていなかった間にバージョンが上がってより複雑となったC#言語に慣れるためで、もう一つはVisual Studio 2010のプロファイリング機能を試して見たか…

Android + Mono

koush's androidmono at master - GitHub android-ruby - Project Hosting on Google CodeAndroidのようなコンパクトなプラットホームは正直に言うとJavaで書くよりC#(というよりC#3.0で)※、もっと言えばRubyで書きたいと思ってしまう。 ※だったらWindows CE…

ならばOpenXMLか?

OpenXMLのラッパーで"ExcelPackage"と呼ばれる、XMLSS.NETに似た実装があったはずと記憶を頼りに探していたのだが、灯台もと暗し、CodePlexだった。ExcelPackage: The convenient way to create SpreadsheetML OOXML on the serverしかし、ざっと見てみると…

Yogesh Jagota氏恐るべし

Excel Xml Library 3.35 released - Yogesh Jagota's Personal BlogYogesh Jagota's Personal Blogcodeproject A Very Easy to Use Excel XML Import-Export Library.まだソースコードを見始めた所だが、恐らくはXMLSSフォーマットを利用した実装だろう。(XM…

XMLSS.NET その2

VB.NETからC#に書き直していたのだが、20個ほど進めてから、はたと気がついた。これって、XMLSS -> Object のデシリアライズは出来るけど、Object -> XMLSSのシリアライズ手段が用意されていないんじゃん。 ガーン ちょっと、いやかなーり慌てたな。

本当の意味での普及

以前紹介したFiddler Web Debuggerや、最近ではsvchost viewer、国産では、コロ助※等を始めとして、.NETを使用した&優れたWindowsアプリケーションがここ1〜2年で随分と増えた感がある。これは完成度の高いツールキットであるWindows FormsとClickOnceを使え…