2009年11月25日水曜日18:10:00

ネクタイの結び方 メモメモ

タグ: by ゆの

ネクタイとか、ここ何年も結んでいないから結び方おぼえていなかった。動画見ておぼえないと。

1:30:00

Adobe AIRでお天気RSSを読込む

Flex Builderで、Adobe AIRアプリケーションをつくってみる。お天気RSSを読込んで、表示するだけのもの。カスタムウィンドウにしてみたり、少しだけアニメーション入れてみたり。初めてのアプリならこんなものかな。

ActionScript3は、XMLの読み取りが楽でいいなー。それほど文法の違いで迷うこともなかったし。使いたい機能を、どう書けば使えるか、調べるのが面倒だけど、それは仕方ない。簡単なアニメーション効果をすぐ実装できるのもいいね。心がAIRに傾いてきたぞ。

参考サイト

2009年11月22日日曜日4:20:00

Shivering Islesメインクエストおわり

タグ: , , by ゆの

久しぶりにいっぱいoblivion。Shivering Islesのメインクエストを一気に終了。格好がより変になってます。

なんか他にやらなきゃいけないことが、あるような気がするけど、きっと気のせい。

2009年11月21日土曜日5:18:00

眠れないから、Adobe Airいじってみた

テキトーにいろいろ。いい感じに眠くなってきた。zzz

2009年11月15日日曜日0:31:00

氷皿>>>>>短スカ

タグ: , by ゆの

FEZで、メインでつかっているキャラクターは氷皿と、短スカです。短スカ、最近やっていたのだけど、ハイドでも簡単にみつかるわ。見つかったら、フルボッコにあうわ。なんか短スカに向いていないのではなかろうか。まあ、見つかるような動きをしてるのだろうけど。

久しぶりに氷皿やってみたら、氷皿の方が活躍してる気がする。近距離戦闘にむいてないのかなぁ

画像は、某クイズ大会予行練習での1枚。3回1位なって、おいしいです。

2009年11月12日木曜日20:28:00

DLLを読込み、そのDLL内にある指定のインターフェースを継承しているクラスを作成して、そのクラスのメソッドを実行する

長いタイトルだな・・・。

久しぶりにブログを書く。twitterでは、よくつぶやいているんだけどね。久しぶりのブログだけど、近況報告とかではなく、プログラミングのメモ。例外処理とか考えていない。

簡単な流れ

  1. フォルダ内のdllパスを取得する
  2. dllパスから、アセンブリを読込む
  3. アセンブリ内の型をすべて取得する
  4. 型が、クラスで、publicで、抽象型ではなく、指定のインターフェースが継承されているか調べる
  5. 当てはまれば、その型のオブジェクトを作成する
  6. 型の数だけ、dllの数だけ繰り返す
  7. 作成されたオブジェクトのメソッドを実行

メインプログラムの一部

    public class HelloDLL
    {
        static public string Hello ()
        {
            string dll_file_path = Path.Combine( Directory.GetCurrentDirectory(), "dll" );
            List<ITest> i_test = new List<ITest>(); // 作成したオブジェクトを格納

            if ( !Directory.Exists( dll_file_path ) )
            {
                return "プラグインフォルダ\"" + dll_file_path + "\"が見つかりませんでした。";
            }

            // dllフォルダの、dllファイルのパスを取得
            string[] dll_s = Directory.GetFiles( dll_file_path, "*.dll" );

            foreach ( string dll in dll_s )
            {
                System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom( dll );

                foreach ( Type _type in asm.GetTypes() )
                {
                    if ( _type.IsClass && _type.IsPublic && !( _type.IsAbstract ) &&
                        _type.GetInterface( typeof( ITest ).FullName ) != null )
                    {
                        i_test.Add( (ITest)asm.CreateInstance( _type.FullName ) );
                    }
                }
            }

            var sb = new StringBuilder();

            foreach ( ITest it in i_test )
            {
                sb.Append( it.Hello() ); // 作成したオブジェクトのメソッド実行
                sb.Append( "\r\n" );
            }

            return sb.ToString();
        }
    }

インターフェース

    public interface ITest
    {
        string Hello ();
    }

dll内クラスの一例

    public class Class1 : TestInterface.ITest
    {
        #region ITest メンバ

        public string Hello ()
        {
            return "Hello 1";
        }

        #endregion
    }

実行結果

Hello 1
Hello 2
Hello 3

続行するには何かキーを押してください . . .

top