<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>dev &gt;&gt; .NET &gt;&gt; Others</title><link>http://blogs.wankuma.com/pinzolo/category/703.aspx</link><description>dev &gt;&gt; .NET &gt;&gt; Others</description><managingEditor>THREE-ONE</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>THREE-ONE</dc:creator><title>XslCompiledTransform で xsl:output の設定内容を反映させるには</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/09/08/155856.aspx</link><pubDate>Mon, 08 Sep 2008 16:36:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/09/08/155856.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/155856.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/09/08/155856.aspx#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/155856.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/155856.aspx</trackback:ping><description>XslCompiledTransform.Transform では、出力先が XmlWriter の場合、ロードした xsl:output の設定内容はデフォルトでは反映されない。&lt;br /&gt;
OutputSettings プロパティに、output 要素の設定内容が格納されているので、XmlWriter.Create 時に渡してやる必要がある。
&lt;textarea name="code" class="C#"&gt;
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(@"C:\xslt.xsl");
XmlWriter writer = XmlWriter.Create(@"C:\result.html", xslt.OutputSettings);
&lt;/textarea&gt;
これで DOCTYPE を指定したり、xml 宣言を出力しないようにできる。&lt;br /&gt;
特に DOCTYPE を指定するのは、XmlWriterSettings じゃできないので注意。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/155856.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>集合あるんだ</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/08/27/154441.aspx</link><pubDate>Wed, 27 Aug 2008 15:08:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/08/27/154441.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/154441.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/08/27/154441.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/154441.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/154441.aspx</trackback:ping><description>&lt;a href="http://msdn.microsoft.com/ja-jp/library/bb359438.aspx" target="_blank"&gt;HashSet&amp;lt;T&amp;gt;[msdn library]&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
System.Collections の頃にはなくて、System.Collections.Generic が出てきた時もなくて、.NET にはないもんだと思ってた。&lt;br /&gt;
3.5 でこっそり？追加されているやん。&lt;br /&gt;
どうしても LINQ などのほうに目が行ってて全然気付かなかった。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/154441.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>拡張メソッドお試し</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/08/21/153797.aspx</link><pubDate>Thu, 21 Aug 2008 11:27:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/08/21/153797.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/153797.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/08/21/153797.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/153797.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/153797.aspx</trackback:ping><description>最近ようやく C# 3.0 の機能を触り始めています。&lt;BR&gt;いろいろと面白いですね。&lt;BR&gt;&lt;TEXTAREA class=C# name=code&gt;public static class Extensions {
    public static IsNull(this object obj) {
        return obj == null;
    }
}

public class Test {
    public static void Main() {
        object obj = null;
        Console.WriteLine(obj.IsNull());
    }
}
&lt;/TEXTAREA&gt; これ、動くんですね。なるほどねって感じです。&lt;BR&gt;でも、== null にするのとほとんど手間変わらないし、いちいちインテリセンス出てくることを考えたら逆に面倒かな。&lt;BR&gt;そもそも object を拡張するってのは行儀よくなさそうですね。&lt;BR&gt;&lt;TEXTAREA class=C# name=code&gt;public static class Extensions {
    public static IsNullOrBlank(this string value) {
        return (value == null) || (value.Trim().Length == 0);
    }
}
&lt;/TEXTAREA&gt; これぐらいなら許容範囲かな？&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/153797.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>IronNails</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/08/21/153768.aspx</link><pubDate>Thu, 21 Aug 2008 08:54:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/08/21/153768.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/153768.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/08/21/153768.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/153768.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/153768.aspx</trackback:ping><description>&lt;A href="http://www.infoq.com/jp/news/2008/08/ironnails" target=_blank&gt;IronNailsについてIvan Porto Carreroに聞く[InfoQ]&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;WPF や Silverlight が Rails 風に開発できるそうな。&lt;BR&gt;というより MVC で開発する方法として Rails 風を採用したという感じ？&lt;BR&gt;ちょっと楽しみです。&lt;br /&gt;
&lt;br /&gt;
# しかし、"鉄の爪" ですか。どんどん物騒になっていってる気がしますね、Ironシリーズ。&lt;br /&gt;
# 誰か IronClaw プロジェクトや IronKiba プロジェクトを立ち上げてみませんか？&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/153768.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>タテの整合性とヨコの整合性</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/07/18/149571.aspx</link><pubDate>Fri, 18 Jul 2008 14:35:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/07/18/149571.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/149571.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/07/18/149571.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/149571.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/149571.aspx</trackback:ping><description>はじめに ArgumentException を throw していたところを ArgumentOutOfRangeException に変更したら、メッセージが変なことになった。&lt;br/&gt;
つまりこういうこと&lt;br/&gt;
&lt;textarea name="code" class="C#"&gt;
public ArgumentException(string message, string paramName)
public ArgumentNullException(string paramName, string message)
public ArgumentOutOfRangeException(string paramName, string message)
&lt;/textarea&gt;
継承しているんだから、そろえてくれてもいいと思うんだけどね。&lt;br/&gt;
それぞれのstring 一つ版のコンストラクタが、メッセージを指定するもの（ArgumentException）、引数名を指定するもの（ArgumentNullException, ArgumentOutOfRangeException）と異なるから、こういう形にしたんだろうな。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/149571.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>Visual Studio 2008 の prop(g)</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/07/16/149156.aspx</link><pubDate>Wed, 16 Jul 2008 16:12:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/07/16/149156.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/149156.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/07/16/149156.aspx#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/149156.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/149156.aspx</trackback:ping><description>2008 ではローカル変数を生成せずに、暗黙プロパティになるのか。&lt;br/&gt;
しかもローカル変数生成する奴はないのか。&lt;br/&gt;
コード量的に暗黙じゃないほうがよかった&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/149156.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>ガード句・・・ね・・・・</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/06/06/141835.aspx</link><pubDate>Fri, 06 Jun 2008 00:55:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/06/06/141835.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/141835.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/06/06/141835.aspx#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/141835.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/141835.aspx</trackback:ping><description>個人的には好きなんですけどね、ガード句。&lt;br/&gt;
&lt;br/&gt;
しかし、今の私のプロジェクトだと微妙に使いづらい場所がありまして。&lt;br/&gt;
つうのもですね、イベントハンドラの開始・終了はログを出すというわけわからん暗黙ルールがあるんですよ。&lt;br/&gt;
&lt;textarea name="code" class="C#"&gt;
private void Button_Click(object sender, EventArgs e) {
    Logger.WriteBeginLog("Button_Click");

    // 色々処理

    Logger.WriteEndLog("Button_Click");
}
&lt;/textarea&gt;
みたいな。&lt;br/&gt;
こういうことされると、ガード句でいきなり return とかできないわけですよ。&lt;br/&gt;
bgein があるけど end がない正常ログとかあり得ないじゃないですか。&lt;br/&gt;
仕方ないので、事前検証系部分をメソッドに抽出して、if で丸ごとくるんでます。&lt;br/&gt;
&lt;textarea name="code" class="C#"&gt;
private void Button_Click(object sender, EventArgs e) {
    Logger.WriteBeginLog("Button_Click");

    if (! ValidateForButton_Click()) {
        // メイン処理
    }

    Logger.WriteEndLog("Button_Click");
}
&lt;/textarea&gt;
みたいな感じですわ。&lt;br/&gt;
極力インデントを深くしないように考えた苦肉の策です。&lt;br/&gt;
しかし昔のソースにはガード句使って早々に return してるソースがあったりするんだな。これが&lt;br/&gt;
もう、キーですきーーーーーーーー&lt;br/&gt;
話の本質からかなりずれてるので、どこにもトラバはらずにグチっておきます&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/141835.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>System.Void のインスタンスを作る</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/04/25/135345.aspx</link><pubDate>Fri, 25 Apr 2008 23:17:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/04/25/135345.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/135345.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/04/25/135345.aspx#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/135345.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/135345.aspx</trackback:ping><description>&lt;a href="http://csharper.blog57.fc2.com/blog-entry-211.html" target="_blank"&gt;http://csharper.blog57.fc2.com/blog-entry-211.html&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
ほぉ～不完全な（初期化されていない）状態とはいえ System.Void のインスタンスが作れるんだ。&lt;br/&gt;
というわけで試してみましたよっと&lt;br/&gt;
&lt;textarea name="code" class="C#"&gt;
public static void Main() {
    Type voidType = typeof(void);
    this.CreateInstance1(voidType);
    this.CreateInstance2(voidType);
    this.CreateInstance3(voidType);
}

private static void CreateInstance1(Type type) {
    Console.WriteLine("-- Use Activator --");
    try {
        object obj = Activator.CreateInstance(type);
        Console.WriteLine(obj.GetType().FullName);
    } catch (Exception ex) {
        Console.WriteLine(ex);
    }
}

private static void CreateInstance2(Type type) {
    Console.WriteLine("-- Use Assembly --");
    try {
        object obj = type.Assembly.CreateInstance(type.FullName);
        Console.WriteLine(obj.GetType().FullName);
    } catch (Exception ex) {
        Console.WriteLine(ex);
    }
}

private static void CreateInstance3(Type type) {
    Console.WriteLine("-- Use FormatterServices --");
    try {
        object obj = System.Runtime.Serialization.FormatterServices.GetUninitializedObject(type);
        Console.WriteLine(obj.GetType().FullName);
    } catch (Exception ex) {
        Console.WriteLine(ex);
    }
}
&lt;/textarea&gt;
実行してみると Activator と Assembly 使ったものは「System.Void のインスタンスを動的に作成できません」とでるが FormatterServices を使うとちゃんと System.Void が出力されますね。&lt;br/&gt;
じつは、.NET Framework 1.1 までは上記のどれでも System.Void のインスタンスは作成できてました。&lt;br/&gt;
さらに FormatterServices.GetUninitializedObject を使った場合、抽象クラスのインスタンスやインターフェースのインスタンスも作成できたりしました。&lt;br/&gt;
具象クラスや実装クラスのインスタンスではなく、抽象クラスやインターフェースのインスタンスです。&lt;br/&gt;
実体何だよ？って思いますが作れるものは作れるんです。&lt;br/&gt;
2.0 以降では抽象クラスのインスタンスは作成できませんと怒られます。&lt;br/&gt;
&lt;br/&gt;
まあ、インスタンスは作れますが C# では Void と宣言することが不可能なため、少し前に中さんが書いてたようなジェネリクスなどに利用することは無理ですけど。&lt;br/&gt;
コンストラクタを実行しないってことは何らかのマーキングのようなものだけ行っているんでしょうか？&lt;br/&gt;
&lt;br/&gt;
気がつけば 300 エントリ目、よくがんばった、俺&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/135345.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>こういう和訳はやめてほしい</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/04/08/132298.aspx</link><pubDate>Tue, 08 Apr 2008 23:47:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/04/08/132298.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/132298.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/04/08/132298.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/132298.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/132298.aspx</trackback:ping><description>&lt;a href="http://msdn2.microsoft.com/ja-jp/library/system.web.httpresponse.suppresscontent.aspx" target="_blank"&gt;http://msdn2.microsoft.com/ja-jp/library/system.web.httpresponse.suppresscontent.aspx&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;blockquote&gt;&amp;gt;HTTP コンテンツをクライアントに送信するかどうかを示す値を取得または設定します。&lt;/blockquote&gt;
なんだけど
&lt;blockquote&gt;&amp;gt;出力しない場合は true。それ以外の場合は false。&lt;/blockquote&gt;
とある。&lt;br/&gt;
するかどうかを示す値なら「する」場合 true になると思わない？&lt;br/&gt;
そんなの俺だけ？&lt;br/&gt;
まあ、英語から見れば自明とは言え、インテリセンスで説明見ると「ん？」と考えてしまう。&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/132298.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>THREE-ONE</dc:creator><title>GetInvalidFileNameChars と GetInvalidPathChars メモ</title><link>http://blogs.wankuma.com/pinzolo/archive/2008/03/19/128545.aspx</link><pubDate>Wed, 19 Mar 2008 12:25:00 GMT</pubDate><guid>http://blogs.wankuma.com/pinzolo/archive/2008/03/19/128545.aspx</guid><wfw:comment>http://blogs.wankuma.com/pinzolo/comments/128545.aspx</wfw:comment><comments>http://blogs.wankuma.com/pinzolo/archive/2008/03/19/128545.aspx#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://blogs.wankuma.com/pinzolo/comments/commentRss/128545.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/pinzolo/services/trackbacks/128545.aspx</trackback:ping><description>-- Path.GetInvalidPathChars()&lt;br/&gt;
ASCIIの0から31&lt;br/&gt;
" - ダブルコーテーション&lt;br/&gt;
&amp;lt; - 小なり&lt;br/&gt;
&amp;gt; - 大なり&lt;br/&gt;
| - パイプ&lt;br/&gt;
&lt;br/&gt;
-- Path.GetInvalidFileNameChars()&lt;br/&gt;
Path.GetInvalidPahtChars()&lt;br/&gt;
* - アスタリスク&lt;br/&gt;
? - 疑問符&lt;br/&gt;
\ - バックスラッシュ、円記号&lt;br/&gt;
/ - スラッシュ&lt;br/&gt;
&lt;br/&gt;
&lt;a href="http://msdn2.microsoft.com/ja-jp/library/system.io.path.getinvalidfilenamechars.aspx" target="_blank"&gt;msdn&lt;/a&gt;の解説では GetInvalidPathChars と同じ解説しか記載されてないのでメモ&lt;img src ="http://blogs.wankuma.com/pinzolo/aggbug/128545.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>