最终的解决方案可能如下,告诉我你怎么看?
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对象初始化为两种派生类型之一,即:
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 对象上的所有方法调用)。