最終的解決方案可能是以下,告訴我你怎麼看?
FileAttrsManager是一個抽象類,用於創建2派生類:
- FileAttrsManagerDos:管理使用DSOFile.dll *
- FileAttrsManagerUnix高級屬性:使用IronPython的管理高級屬性*和python-xattr **
[*] http:\\ www.micros oft.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:
goto case PlatformID.Unix;
case PlatformID.Unix:
_reader = new FileAttrReaderUnix();
break;
case PlatformID.Win32NT:
_reader = new FileAttrReaderDos();
break;
}
}
}
雖然派生類型取決於環境,原始類型用於確保調用_reader對象上的所有方法的自動調度)。
很多時候,依賴外部庫比編寫自己的庫更安全,因爲它最有可能具有更少的錯誤。還是你的意思是「安全」的東西? – svick
@svick我認爲他的安全意味着什麼。 C#是一種託管語言,python不是。 – thekip
@thekip是對的,我只想擁有一個完全託管的代碼和可能的同質開發環境。我已經使用C#作爲粘連:D用於HTTP5 + jQuery + JSON應用(運行在xulrunner中),本地C#代碼,SQLite/MySQL包裝 - 實體提供者等。 通過添加一些其他(非託管)語言和工具,不會讓我的應用更穩定。 – Salaros