コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)

Slides:



Advertisements
Similar presentations
本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
Advertisements

Scala + Lift フレームワーク. Scala の概要 JVM 上で動作するオブジェクト指向+関数型言 語 JVM のスケーラビリティを適用できる Java との相互利用が可能 trait を利用した多重継承( Mix-In )が可能.
Internet Explorer v7,v8 の主な機能
JavaScript プログラミング入門 2006/11/10 神津.
Visual Studio 2005による XML Web サービス入門
S2Container.NET, S2Dao.NET コミッタ 藤井 宏明
JSFによるWebアプリケーション開発 第9回
アルゴリズムとデータ構造 2013年6月18日
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
プログラミング基礎I(再) 山元進.
talend活用事例 ・ナビゲータグラフのカスタマイズにおける事例 ・CSVダウンロードでのカスタマイズ事例
Javaのための暗黙的に型定義される構造体
エンタープライズアプリケーション II 第10回 / 2006年7月23日
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
JSFによるWebアプリケーション開発 第11回
とても使いやすい Boost の serialization
とても使いやすい Boost の serialization
アルゴリズムとデータ構造 2012年6月14日
Visual Studio LightSwitchの概要
アルゴリズムとデータ構造 2011年6月13日
JavaBeans とJSP データベース論 第5回.
JSFによるWebアプリケーション開発 第6回
第20章 Flyweight ~同じものを共有して無駄をなくす~
アルゴリズムとデータ構造 2011年6月14日
プログラミング演習3 第2回 GUIの復習.
第13回 ハッシュテーブルを使ったプログラム ~高速に検索するには?~.
JIMDO勉強会その2 アカウント新規作成.
第12回 2007年7月13日 応用Java (Java/XML).
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
Visual Studio 2005による スマート クライアント入門
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
MVP for VB が語る C# 入門 初音 玲.
MVP for VB が語る C# 入門 初音 玲.
図書館職員のための アプリケーション開発講習会
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
第3回 2007年4月27日 応用Java (Java/XML).
Windows PowerShell Cmdlet
EclipseでWekaのAPIを呼び出す
.NET Framework 3.0 概要 (旧称 : WinFX)
プログラミング演習3 第2回 GUIの復習.
Null ヤバイのでなんとかする takeshik.
Null ヤバイのでなんとかする takeshik.
もっと詳しくArrayクラスについて調べるには → キーワード検索
アルゴリズムとデータ構造1 2005年6月24日
アルゴリズムとデータ構造 2010年6月21日
ソフトウェア制作論 平成30年11月21日.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
独習Java ・ 5.7  静的変数と静的メソッド ・ 5.8  ローカル変数と変数のスコープ  11月20日    小笠原 一恵.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
C#プログラミング実習 第3回.
アルゴリズムとデータ構造 2012年6月11日
Javaによる Webアプリケーション入門 第4回
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
コレクション・フレームワーク データベース論 第7回.
画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化
Action Method の実装 J2EE II 第9回 2004年12月2日.
アルゴリズムとデータ構造1 2009年6月15日
How To WPF アプリケーション Part4 By 中博俊.
アルゴリズムとデータ構造 2010年6月17日
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
JSFによるWebアプリケーション開発 第10回
JSONの概要, Cloud FireStore で JSON を扱う
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
JSFによるWebアプリケーション開発 第7回
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
俺 Tokenizer を作る ~Boost.Tokenizer のカスタマイズ~
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

コンポーネントの再利用に必要な情報 えムナウ (児玉宏之) http://mnow.jp/ http://mnow.wankuma.com/ えムナウ (児玉宏之) http://mnow.jp/ http://mnow.wankuma.com/ http://blogs.wankuma.com/mnow/ http://www.ailight.jp/blog/mnow/

アジェンダ はじめに アトリビュート 型コンバータ まとめ

汎用的で共通化したコンポーネントをライブラリとして蓄積すると工数の削減や後のプロジェクトでも再利用が可能です。 はじめに 汎用的で共通化したコンポーネントをライブラリとして蓄積すると工数の削減や後のプロジェクトでも再利用が可能です。 既存のコントロールをカスタマイズしたカスタムコントロールやユーザーコントロールを作るときにプロパティウィンドウを有効利用すると便利になります。 プロパティウィンドウを有効利用する方法を見て行きましょう。

アトリビュートを設定するとプロパティウィンドウの見た目が変わったり便利な使い方が出来たりします。 コンポーネント開発でよく使うアトリビュートを見て行きましょう。

クラスに設定するアトリビュート DefaultPropertyAttribute DefaultEventAttribute 既定のプロパティを指定 DefaultEventAttribute 既定のイベントを指定 ToolboxBitmapAttribute ツールボックスのアイコンのビットマップを指定 [ DefaultProperty("MyProperty") DefaultEvent("MyEvent") ToolboxBitmap(typeof(MyControl), "MyControlBitmap") ]

Webコントロールのクラスに必要なアトリビュート AspNetHostingPermission 保護された ASP.NET クラスにアクセスする ToolboxDataAttribute ツールボックスからドラッグされるとき コントロールに生成される既定のタグ [ AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal), AspNetHostingPermission(SecurityAction.InheritanceDemand, ToolboxData("<{0}:WebUserControl1 runat=\"server\"> </{0}:WebUserControl1>") ]

Propertyにつけるアトリビュート DefaultValueAttribute BrowsableAttribute プロパティの既定値 BrowsableAttribute プロパティウィンドウにプロパティやイベントを表示するかどうか ReadOnlyAttribute プロパティを読み取り専用にするかどうか

Propertyにつけるアトリビュート CategoryAttribute DescriptionAttribute 項目別モードに設定されているときに分類するカテゴリの名前 DescriptionAttribute プロパティまたはイベントの説明 BindableAttribute バインディングに使用されるかどうか

Propertyにつけるアトリビュート LocalizableAttribute DesignOnlyAttribute プロパティをローカライズする必要があるかどうか DesignOnlyAttribute プロパティを設定できるのがデザイン時だけかどうか ParenthesizePropertyNameAttribute プロパティの名前をかっこで囲んで プロパティウィンドウに表示するかどうか

Propertyにつけるアトリビュート RefreshPropertiesAttribute プロパティウィンドウを更新する必要があるどうか NotifyParentPropertyAttribute 親プロパティに通知するかどうか DesignerSerializationVisibilityAttribute Foo.Designer.cs にコレクションを初期化するコードを生成するかどうか

Propertyにつけるアトリビュート TypeConverterAttribute EditorAttribute 型コンバータとして使用するクラスの型 EditorAttribute プロパティを変更するために使用するエディタ (ダイアログ ボックスまたはドロップダウン ウィンドの為にUITypeEditorの派生クラスのみ指定できる) DesignerAttribute デザイン時サービスを実装するために使用するクラスを指定 (IDesignerをインターフェイスを実装したクラス)

型コンバータはクラスやプロパティに付加できます。 クラスの値と文字列の相互変換や.Net Framework がインスタンスを作成するために必要な情報を持ったクラスに変換します。 型コンバータを作成すると Enum ではないプロパティをコンボボックスから選択できたりします。

コンバータの型に変換するの為のメソッド CanConvertFrom ConvertFrom 型コンバータ 特定の型のオブジェクトをコンバータの型に変換できるかどうか ConvertFrom コンテキストとカルチャ情報を使用して、オブジェクトをコンバータの型に変換

型コンバータ public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) return true; return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) if (value.GetType() == typeof(string)) { Complex newval = new Complex(0, 0); string[] input = ((string)value).Split(new Char[] { ',' }); if (input.GetLength(0) == 2) { newval.r = double.Parse(input[0]); newval.i = double.Parse(input[1]); return newval; return base.ConvertFrom(context, culture, value);

コンバータの型から変換するの為のメソッド 型コンバータ コンバータの型から変換するの為のメソッド CanConvertTo コンバータの型から特定の型のオブジェクトに変換できるかどうか ConvertTo コンテキストとカルチャ情報を使用して、コンバータの型をオブジェクトに変換 InstanceDescriptor に変換することも必要 InstanceDescriptor はFrameworkがインスタンスを作るのに利用する

InstanceDescriptorをサポートする 型コンバータ public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (destinationType == typeof(string)) return true; if (destinationType == typeof(InstanceDescriptor)) return true; return base.CanConvertTo(context, destinationType); } InstanceDescriptorをサポートする

型コンバータ public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType) { if (destType == typeof(string) && value is Complex) Complex ic = (Complex)value; return ic.r.ToString() + "," + ic.i.ToString(); } if (destType == typeof(InstanceDescriptor) && value is Complex) System.Reflection.ConstructorInfo ctor = typeof(Complex).GetConstructor( new Type[] { typeof(double), typeof(double) }); if (ctor != null) return new InstanceDescriptor(ctor, new object[] { ic.r, ic.i }); return base.ConvertTo(context, culture, value, destType);

コンボボックスから選択するには Enum の殻を利用するのが簡単 コンボボックスから選択するの為のメソッド 型コンバータ コンボボックスから選択するには Enum の殻を利用するのが簡単 コンボボックスから選択するの為のメソッド GetStandardValuesSupported リストから選択できる標準値セットをオブジェクトがサポートするかどうか GetStandardValues リストから選択できる標準値のコレクションを作成

型コンバータ public override bool GetStandardValuesSupported (ITypeDescriptorContext context) { return true; } public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) string[] values = { "日本", "カナダ" }; StandardValuesCollection svc = new StandardValuesCollection(values); return svc; 配列を作って変換する

プロパティウィンドウを有効利用する方法を見てきました。 簡単なコンポーネントライブラリを作るには十分な内容です。 まとめ プロパティウィンドウを有効利用する方法を見てきました。 簡単なコンポーネントライブラリを作るには十分な内容です。 しかし、プロパティウィンドウやデザイナを拡張するまだ入り口のところです。 「デザイン時サポートの拡張」をヘルプで検索して調べると色々な方法が見えてきます。