このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
HelloSaver を修正して ISaver2 を実装させても良いのだが、
以前作った HelloSaver(HelloSaver.dll)はそのまま残しておき、
新たに ISaver2 を実装した HelloSaver2 を作る。
これを HelloSaver2.dll という名前でビルドすれば、
旧コードベースの HelloSaver.dll と、新しい HelloSaver2.dll を
混在させた状態でテストすることができるだろうし。
========== HelloSaver2.cs ==========
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Loafer.ScreenSaver.Plugins {
public class HelloSaver : ISaver2 {
public virtual string Name {
get { return "Hello Screen Saver 2"; }
}
public virtual void Configure(IWin32Window owner) {
MessageBox.Show(owner,
"設定できるオプションがありません。",
"HelloSaver2 設定",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
public virtual void Create(IWin32Window window,
int width, int height) {
this.window = window;
this.width = width;
this.height = height;
}
public virtual void Destroy() {
}
public virtual void Paint(Graphics g, Rectangle bounds) {
// 背景を黒で塗りつぶす
g.FillRectangle(Brushes.Black, bounds);
// 中央寄せの書式を用意し
StringFormat format = new StringFormat(StringFormat.GenericDefault);
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
// 描画する
g.DrawString("Hello World 2!", SystemFonts.MessageBoxFont,
Brushes.White, new Rectangle(0, 0, width, height), format);
}
protected IWin32Window window;
protected int width;
protected int height;
}
}
========== end of HelloSaver2.cs ==========
HelloSaver.cs とほぼ同じだが、HelloSaver2 と分かるように、
何箇所かメッセージを変えていることと、
ISaver2 を実装して Name プロパティを持つことが違いだ。
では、これもアセンブリにビルドしておこう。
$ csc /w:4 /t:library /out:HelloSaver2.dll ^
/r:System.dll /r:System.Drawing.dll ^
/r:System.Windows.Forms.dll ^
/r:Loafer.ScreenSaver.dll ^
HelloSaver2.cs
これで、アセンブリ「HelloSaver2.dll」ができた。