.NET Framework

Reflectionって遅いよね?

C++にはなかったReflection。 C#になってSerializeなんかで良く活躍するわけですが、 大量のインスタンスをReflectionを使って処理したりすると思いのほか時間がかかります。 そこでReflectionをなんとかして高速化しようというのが本日のエントリ。 NyaRuRu…

オレオレデザイナを作る?

とかってネタで適当に何度かにわけて記事書こうかと思ってるわけですが、 だれか知りたい人いるのかな? ちなみに内容は、自分でVisualStudioみたいなUIデザイナを作るよ〜って話。 大雑把に書くとSystem.ComponentModelがらみやらSystem.ComponentMode.Design…

CollectionEditor

System.ComponentModel.CollectionEditorというクラスがあります。 PropertyEditorでコレクションの編集をするときに使うわけですが、 こいつには単にICollectionを実装したクラスを渡してもだめです。 MSDNには↓のように書かれています。 継承時の注意 この…

GenericコンテナクラスのEnumerator

Dictionary.Enumerator>とかList.Enumeratorとかは IEnumerator,IEnumerator,IDisposableを実装したstructになっている。 なんで? なんでstructなんだ? ILレベルで見たときにcallvirtしなくてすむからかな?よくわからん。 謎だ。教えてエロイ偉い人!

既存のクラスの型コンバータを拡張(または置き換える)

既存のクラスの型コンバータを動的に拡張または置き換える方法を紹介します。 using System; using System.ComponentMode; using System.Drawing; namespace Test { static class Program { [STAThread] static void Main() { // Colorの型コンバータを動的…

IEnumeratorをIEnumeratorに変換する

IEnumerable<T>を実装するクラスで、 内部ではTでない別の型Uで保持しておきたいときがあるかも?と思ってちょっと作ってみた。 Genericsを使った実行時型生成をなんとなく使ってみたりしてる。</t>

DesignSurface

DesignSurfaceというものがあるらしい。 これを使うとVisualStudioのデザイナみたいなのが簡単に作れる模様。 何かで使いたくなることがあるかもしれないのでメモ。 http://msdn.microsoft.com/msdnmag/issues/06/03/DesignerHosting/default.aspx

genericsとtemplateの違い

わんくま 東京勉強会 #3でεπιστημηさんも話していたgenericsとtemplateの違い。MSDN2に概要のページがあったのでメモ。 Microsoft previous versions of technical documentation | Microsoft Docs

追記

↑の結論の実証コードを書いてみた。 string.emptyと""の参照比較を行うDLLを作る コンソールアプリを作り、最初にstring.Intern( string.Empty )する その後Assembly.LoadFromでDLLをロードして参照比較を行う コンソールアプリのコードは↓ using System; us…

某SNSの某コミュでの話

string.Emptyと文字列リテラル""について参照比較をした場合の挙動が、 .NET Framework 1.1と2.0で異なることについて。 MSDNを引っ掻き回してみると、 string.Internに.NET Framework 1.1と2.0では インターンの仕様が変わったよと書いてある。 String.Inte…

CLR Hosting API

CLR Hosting APIに関する資料メモ。 The Managed Hosting API – .NET Security Blog http://msdn.microsoft.com/msdnmag/issues/06/08/CLRInsideOut/default.aspx http://www.gotdotnet.com/team/clr/about_clr_Hosting.aspx Download Visual Studio 2005 Re…