2005年C#の旅その6
今回はPartial Classについて・・・なんですが、ちょっとしたネタを思いついたので、それを。まずは、サンプルから。
#region Using directives using System; using System.IO; using System.Collections.Generic; using System.Text; #endregion namespace ConsoleApplication1 { class Program { static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("usage Program classname count"); return; } string format = "partial class {0} {{\r\n\t {1} \r\n}}"; StreamWriter sw; using (sw = new StreamWriter(File.Create(args[0] + ".cs"))) { sw.WriteLine(format, args[0], "static void Main() {}"); } for (int i = 0; i < int.Parse(args[1]); ++i) { using (sw = new StreamWriter(File.Create(args[0] + i.ToString() + ".cs"))) { string s = String.Format("void Method{0}() {{}}", i); sw.WriteLine(format, args[0], s); } } } } }
どこが、Partial Classかと言いますと、コイツをビルドして、
$ program.exe MyClass 1000
と、実行するとエントリーポイントを持ったMyClass.csとメソッドと分割されたクラスを含むMyClass0.cs〜MyClass999.csが生成されます。こいつらをまとめてコンパイルすると、ちゃんと1つのMyClassになりました。
ひゃっほー・・・ま、まぁ、息抜きということで。(^^;;;
あと、1000個のソースをプロジェクトにつっこんだところ、かなり重たくなり、応答が無くなったので強制終了させることになってしまいました。真似しない方がいいですよー<誰もしないよ。
Partial Classの真面目な話はこちらをご覧になった方がいいです。