開発の都合でデザインはHTML+CSSで作りたいけど、ロジック部分はC#で書きたいということはあると思います。
(というか、今まさにそんな感じです。)
Windowsストアアプリケーションだと、そういう分担も可能です。
まずはC#側のクラスを作成します。
一つのソリューションにまとめても良いのですが、説明もかねて別々のプロジェクトを作成します。
新しいプロジェクトからクラスライブラリ(Windows ストアアプリ)を選択します。
適当にクラスとメソッドを記述します。
public sealed class CalculatorLib { public double add() { return 10; } }
Calculatorとかいうクラスのくせに全然計算してないじゃないかという突っ込みは無しで・・・。
クラスをsealedで作成していることに注意。
ビルドの設定を「Windowsランタイムコンポーネント」に変更します。
(書いていて、最初からWindowsラインタイムコンポーネントプロジェクトにすれば良いじゃないかと気が付いた・・・)
ビルドを行います。
正常に終了すると.winmdというファイルがbinフォルダ以下に生成されます(デバッグビルドの場合はbin\Debug)。
C#側の作業はこれで終了です。
続いてC#で書かれたクラスを利用するJavaScript側のプロジェクトを作成します。
JavaScript側のプロジェクトは縛りはありませんが今回はシンプルに「空のアプリケーション」にします。
参照の追加より先ほどのwinmdファイルを読み込みます。
これでC#のクラスを呼び出す用意ができました。
今回のクラスはnamespaceが「Calculator」で、クラス名が「CalculatorLib」、addというメソッドを持ちます。
その場合JavaScript側のコードは以下のようになります。
var calc = new Calculator.CalculatorLib(); var num = calc.add();
これで変数numに10という値を得ることができます。
なんか不思議ですが便利な機能ですね。
できればこのクラスをWindows Phoneでも使いたいですね。
Windows PhoneとWindowsストアアプリ間の共有はPCL(Portable Class Library) を使えばよいようなので、この辺のノウハウも後ほど紹介しようと思いますが、@biacさんの記事を待つのが賢いのかもしれない。
Please give us your valuable comment