मैं यह नहीं कहूंगा कि यह बेकार है। आइए नीचे दिए गए उदाहरण का पालन करें कि धाराप्रवाह सिंटैक्स का समर्थन कैसे करें। मामलों में, कि तुम एक जनक में कुछ base
कार्यान्वयन पैदा कर रहे हैं और धाराप्रवाह घोषणाओं प्रदान करना चाहते हैं ... आप इस बाधा इस तरह
public class Parent<TChild>
where TChild : Parent<TChild>
{
public string Code { get; protected set; }
public TChild SetCode(string code)
{
Code = code;
return this as TChild; // here we go, we profit from a constraint
}
}
public class Child : Parent<Child>
{
public string Name { get; protected set; }
public Child SetName(string name)
{
Name = name;
return this // is Child;
}
}
[TestClass]
public class TestFluent
{
[TestMethod]
public void SetProperties()
{
var child = new Child();
child
.SetCode("myCode") // now still Child is returned
.SetName("myName");
Assert.IsTrue(child.Code.Equals("myCode"));
Assert.IsTrue(child.Name.Equals("myName"));
}
}
कृपया उपयोग कर सकते हैं, सिर्फ एक उदाहरण, इसे ले कि यह कैसे की बाधा का उपयोग किया जा सकता है
स्रोत
2012-11-20 09:33:21
इन्हें "उत्सुकता से आवर्ती" सामान्य बाधाओं के रूप में जाना जाता है। यह भी देखें: [Curiouser और curiouser] (http://blogs.msdn.com/b/ericlippert/archive/2011/02/03/curiouser-and-curiouser.aspx), एरिक लिपर्ट द्वारा, यह शायद सबसे अच्छा स्पष्टीकरण है आप प्राप्त कर सकते हैं। – Kobi
यह आमतौर पर वास्तविक वर्ग के प्रकार का संदर्भ प्राप्त करने के लिए उपयोग किया जाता है। उदाहरण IComparable है, आदि – leppie
@AlvinWong, यह पूरी तरह से बेकार नहीं है। आप अपने मूल्यों को रखने वाले फू में गुण जोड़कर, इस तरह पेड़ की तरह संरचनाएं बना सकते हैं। समान रूप से, फू को विरासत में प्राप्त किया जा सकता है, और इसलिए यह बाधा फू के व्युत्पन्न को भी अनुमति देगी। – series0ne