我確信這個問題已經被問了很多次;但是我遇到了一個問題。所以我創建了一個單獨的課程;特別是驗證適當的用戶級別是否存在。受保護的構造函數派生類問題
下面是測試這些權限級別的代碼:
class Elevated_Rights
{
// Token Bool:
private bool _level = false;
#region Constructor:
protected Elevated_Rights()
{
// Invoke Method On Creation:
Elevate();
}
#endregion
public void Elevate()
{
// Get Identity:
WindowsIdentity user = WindowsIdentity.GetCurrent();
// Set Principal
WindowsPrincipal role = new WindowsPrincipal(user);
#region Test Operating System for UAC:
if (Environment.OSVersion.Platform != PlatformID.Win32NT || Environment.OSVersion.Version.Major < 6)
{
// False:
_level = false;
// Todo: Exception/ Exception Log
}
#endregion
else
{
#region Test Identity Not Null:
if (user == null)
{
// False:
_level = false;
// Todo: "Exception Log/Exception"
}
#endregion
else
{
#region Ensure Security Role:
if (!(role.IsInRole(WindowsBuiltInRole.Administrator)))
{
// False:
_level = false;
// Todo: "Exception Log/Exception"
}
else
{
// True:
_level = true;
}
#endregion
} // Nested Else 'Close'
} // Initial Else 'Close'
} // End of Class.
}
所以這部分工作爲目的;但是,當我將這個類繼承到另一個類來利用受保護的構造函數時,我碰到了一個障礙。
class Default_Configuration : Elevated_Rights
{
#region Constructor:
public Default_Configuration() : base()
{
Elevate();
}
#endregion
}
但是,當我叫這個新班;該方法指出:「由於構造器權限導致無效訪問」。理論上應該工作;有什麼我失蹤?任何幫助將不勝感激。
「該方法狀態....」?這聽起來像是一個運行時,而不是編譯器的問題......您是否使用Lazy或類似在運行時構造實例的東西? –
你確實意識到你會按照目前的寫法來調用'Elevate()'兩次嗎? – Bobson
你可以發佈調用代碼嗎? –