पावरहेल cmdlets में संबंधित कार्यों का एक सेट उजागर करते समय, संपत्ति नामों और सारांश को साझा करना संभव है ताकि इन्हें किसी भी असेंबली में cmdlets में सामान्यीकृत किया जा सके?क्या सी # में पावरहेल cmdlets के बीच गुणों और टिप्पणियों को साझा करना संभव है?
मुझे पता है कि यह व्युत्पन्न कक्षाओं के साथ किया जा सकता है, लेकिन यह समाधान सबसे अच्छा है जब विभिन्न गुणों के साथ कई cmdlets साझा किए जाते हैं।
यहां एक बेहद सरल उदाहरण है। मैं संपत्ति 'नाम' और सभी संबंधित टिप्पणियों को साझा करना चाहता हूं ताकि वे हमारे द्वारा उत्पादित एन cmdlets में समान हों, लेकिन मैं 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
}
}
}
यदि आप प्राप्त नहीं करना चाहते हैं (मैं कारण के बारे में स्पष्ट नहीं हूं) टिप्पणियां साझा करने का सबसे अच्छा तरीका एक्सएमएल का उपयोग करना है (फ्रेमवर्क स्रोत कोड देखें)। आप अपने कोड के बाहर कोड प्रलेखन रखते हैं, इसे किसी और द्वारा लिखा और बनाए रखा जा सकता है (यदि आवश्यक हो) और इसे कक्षाओं और यहां तक कि असेंबली में भी साझा किया जा सकता है। –
@Adriano एक्सएमएल के माध्यम से टिप्पणियों को साझा करने के विचार को देखने के लिए धन्यवाद। प्राप्त करने के इच्छुक नहीं होने के कारण यह है कि साफ-सफाई करना संभव है। यदि cmdlet ए पी 1, पी 2 का उपयोग करता है, जबकि cmdlet बी पी 2, पी 3 और सेमीडलेट सी का उपयोग करता है तो पी 1, पी 3 का उपयोग पी 1, पी 2, पी 3 वांछित के रूप में प्राप्त करने और साझा करने का कोई तरीका नहीं है। मुझे यह भी एहसास है कि इन गुणों को साझा करने का मेरा विचार अच्छी तरह से स्थापित नहीं किया जा सकता है। जब भी कुछ बदलता है तो एन एन स्थानों को अपडेट करने में परेशानी हो गई है और मुझे यकीन है कि प्रतिलिपि प्रतिलिपि और पेस्ट कोड से नफरत है। – pennyowe
ओह, तो आप सही हैं! मैंने सोचा कि उनके पास कई साझा गुण थे। ऐसा करने का एकमात्र तरीका यह है कि इसमें शामिल है (लेकिन यह केवल टिप्पणियों के लिए ठीक है)। किसी दिन (शायद ...) हमारे पास एकाधिक विरासत होगी ... –