プログラマーな日々

プログラマーをやっています。好きなものは、C#, TaskChute Cloud, WorkFlowy, Backlog, AWSです。

.NET

「CLR/H in Tokyo 第3回 」に行ってきた(「C#や.NET Frameworkがやっていること」by 岩永信之さん)

6/28に「CLR/H in Tokyo 第3回」の勉強会に行ってきました。CLR/H in Tokyo 第3回 - connpass 岩永信之さんのセッション「C#や.NET Frameworkがやっていること」で、メモしたことを書いておきます。

nullを許容しない参照型クラス

.NETにはnullを許容する値型nullableがあります。 逆にnullを許容しない参照型クラスがあったら、予期しないnull例外を避けられると思い作ってみました。 Unnullable.cs using System; namespace UnnullableTest { public class Unnullable<T> where T : class </t>…

EventLog.WriteEntry メソッドで出力可能な最大文字数が Windows のバージョンによって異なる

EventLog.WriteEntryメソッドの不具合情報です。 EventLog.WriteEntry メソッドで出力可能な最大文字数が Windows のバージョンによって異なる.NET Framework System.Diagnostics.Eventlog.WriteEntry メソッドのリファレンスには、出力文字列が 32766 バイ…

Silverlightのコントロールの機能別一覧

Silverlightのコントロールの機能別一覧です。 コントロールの機能別一覧Silverlight には、さまざまな機能を実行するクライアント コントロールがあります。 機能が類似したコントロールを比較して、シナリオに合ったコントロールを選択できます。 これらの…

Entity Frameworkコードファーストを試してみた

型付きデータセット + テーブルアダプターの抱える問題 データアクセスは、型付きデータセット + テーブルアダプターにずっと頼ってました。でも採用することにためらいを感じ始めました。複数人で同時に開発すると、コンフリクトが発生します。でも型付きデ…

WCFテストクライアントでWCFサービスをテストする

WCFテストクライアントでWCFサービスをテストする方法を紹介します。 検証環境 Visual Studio 2010 SP1 手順 WCFサービスを起動する ※MEXエンドポイントを公開する必要があります。 Visual Studio コマンドプロンプトを起動する メニュー[Microsoft Visual S…

Sandcastle Help File Builder が Visual Studio 2012 と .NET Framework 4.5 をサポートしました

Sandcastle Help File Builder が、バージョン1.9.5.0で Visual Studio 2012 と .NET Framework 4.5 をサポートしました。 This new release supports Visual Studio 2010 and 2012 solutions and projects as documentation sources, and adds support for …

OfficeのCOMオブジェクトを自動で解放してくれるライブラリNetOfficeがすばらしい

.NETからOfficeを扱うのは非常に面倒です。1つでもCOMオブジェクトの解放漏れがあるとプロセスが解放されずに残ってしまうからです。 複数のCOMオブジェクトを確実に解放する - プログラマーな日々.NETでCOMを扱う際に、複数のCOMオブジェクトを確実に解放…

アプリケーション構成ファイルを編集する

app.configの設定値を変更する方法を紹介します。 検証環境 Visual Studio 2010 SP1 .NET Framework 4 app.config <configuration> <appSettings> <add key="hoge" value="foo"/> </appSettings> </configuration> ソースコード using System.Configuration; namespace AppConfigSample { class Program { stat…

DataGridViewのDataBindingCompleteイベントが複数回発生する現象に対処する

DataGridViewのDataBindingCompleteイベントが複数回発生する現象に遭遇しました。 検索で次のブログがヒットしました。 DataGridView の DataBindingComplete イベントの発生回数 コード内で DataSource と DataMember の設定を行うとして、DataSource → Da…

イベントハンドラはprotectedにしないとマークアップからは参照できない

イベントハンドラはprotectedにしないとマークアップのクラスからは参照できません。 ButttonコントロールのClickイベントを例として説明します。 どういうこと? ビハインドコードにイベントハンドラ(Button_Click)を作成し、アクセス修飾子をprivateまた…

Evalの戻り値をメソッドの引数にする場合は明示的にキャストしなければならない

Evalの戻り値をビハインドコードのメソッドの引数にしたいことがあります。 例えば、以下のようなメソッドをマークアップから呼び出す場合です。 /// <summary> /// コードから表示文字列を取得します。 /// </summary> /// <param name="value">コード。</param> /// <returns>変換された文字列。</returns> protected string C…

System.Collections.Generic.HashSetクラスを使ってみた

System.Collections.Generic.HashSetクラスを使ってみました。 HashSet(T) クラス (System.Collections.Generic)値のセットを表します。 HashSet コレクション型簡単に言えば、HashSet クラスは値のない Dictionary コレクションと考えることができます。 ..…

System.IO.Path.Combineメソッドはドライブレター直後にセパレータを付加しない

System.IO.Path.Combineメソッドはドライブレター直後にセパレータを付加しません。 Path.Combine メソッド (System.IO)複数の文字列を 1 つのパスに結合します。 ... つまり、次のコードは、 System.IO.Path.Combine(@"c:", "hoge"); 以下を返します。 c:ho…

checkedキーワードとuncheckedキーワード

C#でcheckedキーワードとuncheckedキーワードというものを知りました。 checkedキーワード、uncheckedキーワードとは? MSDNから引用します。 checked (C#)checked キーワードは、整数型の算術演算および変換に対してオーバーフロー チェックを明示的に有効…

LINQプロバイダまとめ

LINQプロバイダをまとめてみました。いろいろありますね。Linq To OracleThe Linq To Oracle project provides a custom query provider for Oracle databases. ...LINQ to Active DirectoryLINQ to Active Directory implements a custom LINQ query provid…

WPFで背景が透明なウィンドウを作成する

WPFで背景が透明なウィンドウを作成する方法を紹介します。 App.xaml <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Lancher.App" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application> MainWindow.…

IEnumerable.GroupJoinメソッド

Enumerable.GroupJoin(TOuter, TInner, TKey, TResult) メソッド (IEnumerable(TOuter), IEnumerable(TInner), Func(TOuter, TKey), Func(TInner, TKey), Func(TOuter, IEnumerable(TInner), TResult)) (System.Linq)キーが等しいかどうかに基づいて 2 つの…

IEnumerable.SelectManyメソッド

Enumerable.SelectMany(TSource, TResult) メソッド (IEnumerable(TSource), Func(TSource, IEnumerable(TResult))) (System.Linq)シーケンスの各要素を IEnumerable に射影し、結果のシーケンスを 1 つのシーケンスに平坦化します。 ソースコード using Sys…

ビルド時に「"Exec" タスクには実行するためのコマンドが必要です。」のエラーが発生する

ビルド時に「"Exec" タスクには実行するためのコマンドが必要です。」のエラーが発生しました。 原因 ビルドイベントの[ビルド前/後に実行するコマンドライン]に改行だけが入力されていると、コマンドを実行しようとして何もコマンドがないためにエラーにな…

C#でWordファイルをPDFに変換する

検証環境 Visual Studio 2008 SP1、.NET Framework 3.5、Word 2007、Office 2007 SP2 プロジェクトの作成 プロジェクトテンプレートはコンソールアプリケーションを選択します。 参照の追加 [COM] - [Microsoft Word 12.0 Object Library]への参照を追加しま…

バージョン別InstallUtil.exeのパス

すぐ忘れるので。 1.1 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe 2.0 - 3.5 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe 4 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe

IEnumerable.Whereメソッド

Enumerable.Where(TSource) メソッド (IEnumerable(TSource), Func(TSource, Boolean)) (System.Linq)述語に基づいて値のシーケンスをフィルター処理します。 SQLでは、WHEREに相当します。 ソースコード using System; using System.Collections.Generic; u…

ディレクトリ名の変更を拡張メソッドで実装する

前回(以下のエントリー)のディレクトリ版を作ってみました。 ファイル名の変更を拡張メソッドで実装する - プログラマーな日々ファイル名の変更が必要なケースは珍しくありませんが、System.IO.FileにもSystem.IO.FileInfoにも名前を変更するメソッドはあ…

ファイル名の変更を拡張メソッドで実装する

ファイル名の変更が必要なケースは珍しくありませんが、System.IO.FileにもSystem.IO.FileInfoにも名前を変更するメソッドはありません。 そこで、ファイル名の変更を拡張メソッドでFileInfoに実装してみました。内部ではFileInfo.MoveToメソッドを使用して…

C#のソースコードをJavaに変換できるサイト「CodePorting C#2Java」

※サイトは閉鎖されてしまったようです(2013/10/17追記)C#のソースコードをJavaに変換できるサイト「CodePorting C#2Java」を紹介します。 Free Source Code Converter - Convert .NET Applications to Java クリックするとサインインページが表示されます…

IEnumerable.Unionメソッド

Enumerable.Union(TSource) メソッド (IEnumerable(TSource), IEnumerable(TSource)) (System.Linq)既定の等値比較子を使用して、2 つのシーケンスの和集合を生成します。 SQLでは、UNIONに相当します。 ソースコード using System; using System.Collection…

IEnumerable.ToLookupメソッド

Enumerable.ToLookup(TSource, TKey) メソッド (IEnumerable(TSource), Func(TSource, TKey)) (System.Linq)指定されたキー セレクター関数に従って、IEnumerable から Lookup を作成します。 ソースコード using System; using System.Collections.Generic;…

IEnumerable.ToListメソッド

Enumerable.ToList(TSource) メソッド (System.Linq)IEnumerable から List を作成します。 ソースコード using System; using System.Collections.Generic; using System.Linq; namespace LinqSample { class Program { static void Main(string[] args) { …

エラーメッセージを英訳してくれるサイト「FindErr.NET」

エラー原因を調査するとき、日本語のエラーメッセージで検索してもわずかな件数しかヒットしないことがあります。 英語のエラーメッセージで検索したいけどわからない...そんなときはエラーメッセージを英訳してくれるサイト「FindErr.NET」を使ってみましょ…