C#
基本的に配列の操作はスレッドセーフではないので(あるスレッドが配列に追加・削除している途中で、別スレッドでFor Eachしたら正しく列挙できない)マルチスレッドで配列のデータを操作する場合は、同時に実行されないようにロックする必要があります。非…
非ジェネリック → ジェネリックの対応一覧。ジェネリック型は、Objectを操作する非ジェネリック型と違い、配列に格納する型(String,Integer・・etc)に合わせたタイプセーフな配列として定義できます。ArrayListとHashTableは名前が変わっているので要注意…
基本的に配列の操作はスレッドセーフではないので(あるスレッドが配列に追加・削除している途中で、別スレッドでFor Eachしたら正しく列挙できない)マルチスレッドで配列のデータを操作する場合は、同時に実行されないようにロックする必要があります。■lo…
ウインドウアプリケーションでは、ウインドウそれぞれがメッセージキューを持っていて順番にメッセージを処理します。処理が終わるまでは、次のメッセージは処理されません。この特性を利用して、処理のタイミングを調整するプログラミングテクニックをウイ…
XMLシリアライズは、クラスのメンバに1対1でXMLの要素や属性が対応します。ですが、以下のようなname要素に属性(japan)と値(taro kobe)を持つXMLの場合は、2つ以上のメンバをXMLの1要素として対応付けさせる必要があります。 taro kobe manager この…
VSS 管理下にあるプロジェクトをVSSに接続できない環境に持っていく、自動ビルドやバッチでの静的解析の際にバインド情報が残存しているとバッチ処理に失敗するなど、VSSのバインド情報を削除する必要があります。今回は、VSSのバインド情報が、どのように構…
xsdツールで自動生成したクラスをXMLSerializerで読み込もうとした場合に例外が発生するケースがあります。これはXSDが対応できていないタイプのXMLです。 Message="一時クラスを生成できません (result=1)。\r\nerror CS0030: 型 'XMLAttributeTest.Company…
配列をXMLシリアライズを使用して出力する場合は次の専用のアトリビュートを指定します。・[System.Xml.Serialization.XmlArrayAttribute("Members")] ・[System.Xml.Serialization.XmlArrayItemAttribute("Member")]この2つのアトリビュートはペアで指定し…
XMLでシリアライズ可能なクラスを定義する場合は、クラスとメンバにそれぞれXMLのタグを示すアトリビュートを設定します。以下の3つのアトリビュートが基本となります。■ [System.Xml.Serialization.XmlRootAttribute("Company")] XMLのルートノードに対応…
XSD(XML Schema Definition Language)はXMLの構造を定義したファイルで、XSDを使用してXMLの構造が正しいかどうか検証することが出来ます。 これには、XmlReader、XmlReaderSettings、XmlSchemaSetクラスを利用します。name要素とjob要素が必ず1つ必要なXSD…
xmlSerializerを使用してシリアライズ(serialize)する際にFileStreamを使用して出力すると、下記のようなEncoding属性が付与されません。 xml version="1.0" encoding="utf-8" Encoding属性を指定するにはStreamWriterを使用して設定したいEncodingを使用す…
xmlSerializerを使用してシリアライズ(serialize)すると、以下のようにxmlns:xsiやxmlns:xsdといった名前空間が出力されます。 ですが、このような名前空間は不要ということもあると思います。 その場合は、シリアライズ(serialize)時に空の名前空間オブジェ…
Visual studio に付属しているxsdツールは、xmlからxsd (xml schema)、xsdからc#,vb.netのクラスを自動生成することができます。 xmlファイルを読み込もうとしている場合、xsdやC#,vb.Netのクラスを手書きするのではなく、xsdツールを使って生成すると便利で…
xmlの読み書きにはXMLSerializerを使用します。シリアライズとは永続化の意味で、ヒープメモリ上に存在するオブジェクトをファイルやデータベースなどに保存する事を意味します。また、保存したデータからヒープメモリ上にオブジェクトを生成することをデシ…