タグ

2016年11月5日のブックマーク (3件)

  • C#でプラグインDLLを作る方法(入門編) - Qiita

    概要 C#のアプリケーションで、ビルドの時点では未知なDLLをロードし、運用する方法について述べます。プラグインシステムの構築に役立つと思います。ついでにC#でのアセンブリの概念や、リフレクションの初歩にも触れます。 アセンブリとは C#でいうアセンブリとは、ざっくり言うとexeかdllのことです。実行可能なアプリケーションがexe、ライブラリがdllとなります。C#ではすべてのライブラリがdllとしてビルドされます。exeが実行可能であること以外は、両者にほとんど差はなく、ひっくるめてアセンブリと呼ばれることが多いです。 静的な参照 C++でdllを利用する際には、インポートライブラリをリンクして参照を埋め込む方法と、LoadLibrary()やCOMなどを使って動的にdllをロードする方法がありました。 C#のアセンブリ参照にも、同じく2通りの方法があります。まずは静的な参照解決の方法

    C#でプラグインDLLを作る方法(入門編) - Qiita
  • C# インターフェース - IDisposable | プログラマーズ雑記帳

    今回は C# のインターフェースの IDisposable に関する説明です。 このインターフェースはファイルといった後処理のタイミング管理が必要なクラスで実装します。 using IDisposable を継承すると using (名前空間のものとは別) が使えるようになります。 まず、この using について説明します。 あるファイルに書き込みを行い、次にそれに読み取る処理を考えます。 { StreamWriter sw = new StreamWriter("TestFile.txt"); // ファイルへの書き込み sw.WriteLine("Hello World!"); } // ファイルの読込 StreamReader sr = new StreamReader("TestFile.txt"); ファイルへの書き込みを行うオブジェクト sw はブロックを抜けると、 必要がな

  • 【保存版】構造体のマーシャリングのまとめ - 鷲ノ巣

    P/Invoke で Windows API を呼び出す際、引数に構造体を渡すには、割と色々な方法があります。 最近ちょっと混乱したので、改めてまとめてみました。 これまで知らなかった便利な方法も紹介しています。 新機能でも何でもありませんが、よく P/Invoke を使われる方にはご一読頂いて損はない内容だと思います。 ちなみに、記事では、C# で言う struct と class を総称して「構造体」と呼ぶこととします。 struct と class の区別が必要な場合は「struct」と「class」または「値型」と「参照型」と呼び分けます。 文中では「struct ≠ 構造体」ということにご留意ください。 なお、記事の内容は、Windows API の呼び出しに限定した内容になっています。 COM の場合はまた事情が違うのですが、そちらは割愛させて頂きます。 struct と

    【保存版】構造体のマーシャリングのまとめ - 鷲ノ巣