在Powershell cmdlet中公開一組相關函數時,是否可以共享屬性名稱和摘要幫助,以便在程序集中跨cmdlet對這些函數進行規範化處理?是否可以在c#中的Powershell cmdlet之間共享屬性和註釋?
我知道這可以通過派生類來完成,但是當有多個具有不同屬性的cmdlet可以共享時,這種解決方案充其量是尷尬的。
這是一個非常簡單的例子。我想分享屬性「名稱」和所有相關的評論,以便它們在我們正在製作的N個cmdlet中是相同的,但我想不出在c#中執行此操作的好方法。理想情況下,任何共享都將允許指定參數屬性,如強制或位置。
namespace FrozCmdlets
{
using System.Management.Automation;
/// <summary>
/// Adds a new froz to the system.
/// </summary>
[Cmdlet(VerbsCommon.Add, "Froz")]
public class AddFroz : Cmdlet
{
/// <summary>
/// The name of the froz.
/// For more information on the froz, see froz help manual.
/// </summary>
[Parameter]
public string Name { get; set; }
protected override void ProcessRecord()
{
base.ProcessRecord();
// Add the froz here
}
}
/// <summary>
/// Removes a froz from the system.
/// </summary>
[Cmdlet(VerbsCommon.Remove, "Froz")]
public class RemoveFroz : Cmdlet
{
/// <summary>
/// The name of the froz.
/// For more information on the froz, see froz help manual.
/// </summary>
[Parameter]
public string Name { get; set; }
protected override void ProcessRecord()
{
base.ProcessRecord();
// Remove the froz here
}
}
}
如果你不想派生(我不清楚的原因)分享評論的最佳方式是使用XML包括(看看框架的源代碼)。您將代碼文檔保存在代碼之外,可以由其他人編寫和維護(如果需要)代碼文檔,並且可以跨類甚至程序集共享代碼文檔。 –
@Adriano感謝您關注通過XML包含共享評論的想法。不想得到的理由是可以乾淨地做。如果小命令A使用P1,P2,而小命令B使用P2,P3和小命令C使用P1,P3,則無法根據需要派生和共享P1,P2,P3。 我也意識到我的共享這些屬性的想法可能不是有根據的。只要發生了一些變化,更新N個地方就成了一件麻煩事,我肯定會討厭拷貝和粘貼代碼。 – pennyowe
哦,那你是對的!我只是認爲他們有很多共享屬性。我認爲唯一的方法就是通過include(但只對評論可行)。有一天(也許......)我們將有多重繼承... –