ものがたり(旧)

atsushieno.hatenablog.com に続く

System.Voidのインスタンスを作る

update: いや、Activate.CreateInstance(typeof(void))で普通に作れるようです(つまり↓のActivate.CreateInstance()でコケるというのは間違いみたい)。

System.Voidのインスタンスってどうやったら作れるんでしょうね? 以下WinFXのXmlFormatterを使った例:


using System;
using System.Runtime.Serialization;
using System.Xml;

public class Test
{
public static void Main ()
{
using (XmlReader xr = XmlReader.Create (new StringReader (""))) {
xr.MoveToContent ();
XmlFormatter f = new XmlFormatter ();
object o = f.Deserialize (xr, typeof (void), true);
Console.WriteLine ("{0} {1}", o.GetType (), o);
}
}
}

# よい子はこんなコードを書いちゃいけません

Activator.CreateInstance()ではコケるので、予想としては「DynamicMethodを使って直接newobjしている」かな(未確認)。ILならだいぶ何でもアリだし。

最近genericsなコードを少なからず書いているせいか、イイ感じにgmcsのバグがぽんぽんと出てくる。自分でもライトな奴は内部構造が良く分からないままに直しているのだけど、この辺辺りは全然まともに直らず…。Martinが気まぐれで直していく速度には全くかなわない。とりあえずドイツの悪天候を祈る。それが僕に出来ること。あと が直ってくれればだいぶ助かるんだけどなぁ。

やっべ。Duncanと「まいっちんぐ」がOKで"Hashitthingu"がNGな語句構造について話してたらもうこんな時間ですよあんた。日々こんなんばっかやな。