ठीक है, मेरे पास अभी तक एक और कोड अनुबंध है।कोड अनुबंधों में अनुबंध। फोरेल का उपयोग
[ContractClassFor(typeof(IUnboundTagGroup))]
public abstract class ContractForIUnboundTagGroup : IUnboundTagGroup
{
public IUnboundTagGroup[] GetAllGroups()
{
Contract.Ensures(Contract.Result<IUnboundTagGroup[]>() != null);
Contract.Ensures(Contract.ForAll(Contract.Result<IUnboundTagGroup[]>(), g => g != null));
return null;
}
}
मैं कोड लेने वाली इंटरफेस है कि इस तरह दिखता है:
public void AddRequested(IUnboundTagGroup group)
{
foreach (IUnboundTagGroup subGroup in group.GetAllGroups())
{
AddRequested(subGroup);
}
//Other stuff omitted
}
AddRequested
एक गैर की आवश्यकता है मैं एक अंतरफलक विधि पर एक अनुबंध है कि (अन्य तरीकों स्पष्टता के लिए छोड़े गए) इस तरह दिखता है शून्य इनपुट पैरामीटर (यह एक इंटरफ़ेस लागू करता है जिसमें अनुबंध की आवश्यकता होती है) और इसलिए मुझे AddRequested
में पारित होने पर उप समूह पर अनुचित: समूह! = शून्य 'त्रुटि प्राप्त होती है। क्या मैं ForAll वाक्यविन्यास का सही उपयोग कर रहा हूं? यदि ऐसा है और सॉल्वर बस समझ में नहीं आता है, तो सॉल्वर अनुबंध को पहचानने में मदद करने का कोई और तरीका है या जब भी GetAllGroups() को कॉल किया जाता है तो मुझे बस एक Assume का उपयोग करने की आवश्यकता होती है?
नवीनतम संस्करण ने 'ForAll' को सक्षम किया है, तो आप इसे आज़मा सकते हैं :) – porges