最終的な解決策は次のようになるかもしれません。どう思いますか?
FileAttrsManagerは、2 つの派生クラスを作成するために使用される抽象クラスです。
- FileAttrsManagerDos : DSOFile.dll* を使用して高度な属性を管理します
- FileAttrsManagerUnix : IronPython* および python-xattr** を使用して高度な属性を管理します
[ * ] http:\\www.microsoft.com/download/en/details.aspx?displaylang=en&id=8422
[ ** ] http:\\ironpython.codeplex.com
[ ** * ] http:\\pypi. python.org/pypi/xatt
拡張属性操作 (SetPropery(string key, object value)
などGetProperty(string key)
) は、静的クラス ( FileAttrsProvider ) で管理されます。これは、FileAttrsManagerオブジェクトを次の 2 つの派生型のいずれかに初期化します。
public static class FileAttrProvider
{
private static FileAttrReader _reader = null;
public static void Initialize()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.MacOSX:
case PlatformID.Unix:
_reader = new FileAttrReaderUnix();
break;
case PlatformID.Win32NT:
_reader = new FileAttrReaderDos();
break;
}
}
}
派生型は環境に依存しますが、_reader オブジェクトに対するすべてのメソッド呼び出しの自動ディスパッチを確実にするために元の型が使用されます)。