プリンタを表すクラス PrintQueue クラスの C# のコードです。
[DataObject()]
public sealed class PrintQueue : DomainObject
{
#region プライベートフィールド
private readonly string _name, _server;
#endregion
#region インターナルコンストラクタ
//DirectoryEntry を指定して PrintQueue クラスの新しいインスタンスを初期化します。
internal PrintQueue(DirectoryEntry entry)
: base(entry)
{
_name = entry.Properties["printerName"].Value.ToString();
_server = entry.Properties["serverName"].Value.ToString();
}
#endregion
#region パブリックプロパティ
//カラーかどうかを取得または設定します。
public bool Color
{
get
{
if (base.IsDisposed)
{
throw new ObjectDisposedException(this.GetType().Name);
}
return Convert.ToBoolean(base.Entry.Properties["printColor"].Value);
}
set
{
if (base.IsDisposed)
{
throw new ObjectDisposedException(this.GetType().Name);
}
base.Entry.Properties["printColor"].Value = value;
}
}
※以降の DirectoryEntry を参照するプロパティの Dispose チェックは省略します。
//両面かどうかを取得または設定します。
public bool Duplex
{
get
{
return Convert.ToBoolean(base.Entry.Properties["printDuplexSupported"].Value);
}
set
{
base.Entry.Properties["printDuplexSupported"].Value = value;
}
}
//名前を取得します。
public string FullName
{
get
{
return base.Name;
}
}
//場所を取得または設定します。
public string Location
{
get
{
return (string)base.Entry.Properties["location"].Value;
}
set
{
base.Entry.Properties["location"].Value = value;
}
}
//最高解像度を取得または設定します。
public int? MaxResolution
{
get
{
return (int?)base.Entry.Properties["printMaxResolutionSupported"].Value;
}
set
{
base.Entry.Properties["printMaxResolutionSupported"].Value = value;
}
}
//モデルを取得または設定します。
public string Model
{
get
{
return (string)base.Entry.Properties["driverName"].Value;
}
set
{
base.Entry.Properties["driverName"].Value = value;
}
}
//プリンタ名を取得します。
public override string Name
{
get
{
return _name;
}
}
//サーバ名を取得します。
public string ServerName
{
get
{
return _server;
}
}
//印刷速度を取得または設定します。
public int? Speed
{
get
{
return (int?)base.Entry.Properties["printPagesPerMinute"].Value;
}
set
{
base.Entry.Properties["printPagesPerMinute"].Value = value;
}
}
//ホチキス止めかどうかを取得または設定します。
public bool Stapling
{
get
{
return Convert.ToBoolean(base.Entry.Properties["printStaplingSupported"].Value);
}
set
{
base.Entry.Properties["printStaplingSupported"].Value = value;
}
}
#endregion
#region パブリックメソッド
//指定した名前のプリンタを検索します。このメソッドはデータバインド用です。
[DataObjectMethod(DataObjectMethodType.Select)]
public static PrintQueue FindByName(string name)
{
return (PrintQueue)DirectoryAccess.FindDirectoryObject(name, CategoryType.PrintQueue);
}
//プリンタの一覧を取得します。このメソッドはデータバインド用です。
[DataObjectMethod(DataObjectMethodType.Select)]
public static IList<PrintQueue> GetPrintQueues()
{
return DirectoryAccess.GetPrintQueues(); //プリンタを取得
}
#endregion
}
少しですが説明は VB のコードの方に書いてます。
データバインド用のメソッドは内部で DirectoryAccess クラスのメソッドを呼んでますが、これについては別途書きます。