तो अगर वहाँ एक class
, मैं क्यों enum
संपत्ति या इस स्थिति में type
<T>
के किसी भी static
संपत्ति उपयोग नहीं कर सकते Bar
कहा जाता है में एक enum
संपत्ति है। मैं स्पष्ट रूप से घोषणा कर रहा हूं कि <T>
type
Bar
है। बस जानना चाहता था कि क्या यह जेनरिक की सीमा है या enum
type
स्वयं ही है।से जेनेरिक संदर्भ प्रकार एक Enum या स्टेटिक संपत्ति हो रही <T>
public class Foo<T> where T : Bar
{
public Foo()
{
// This obviously works
var car = Bar.Cars.Honda;
var name = Bar.Name;
// Why can't I do this ?
var car2 = T.Cars.Toyota;
var name2 = T.Name;
}
}
public class Bar
{
public static string Name { get; set; }
public enum Cars
{
Honda,
Toyota
};
}
UPDATED @Frederik Gheysels के जवाब में, यह उल्लेख किया गया है कि अगर मैं एक class
कि बस Bar
से ली गई है है कि मैं enum
या के किसी भी static
के लिए पहुँच नहीं होगा base
। यह सही नहीं है, यह संकलित करता है और काम करता है।
public class Foo : Bar
{
public Foo()
{
// This all works
var address = this.Address;
var car = Foo.Cars.Honda;
var name = Foo.Name;
}
}
public class Bar
{
public static string Name { get; set; }
public string Address { get; set; }
public enum Cars
{
Honda,
Toyota
}
}
आप * ऐसा क्यों करने में सक्षम होना चाहते हैं? यहां उपयोग का मामला क्या है? –
http://stackoverflow.com/questions/196661/calling-a-static-method-on-a-generic-type-parameter – AlG
जैसा ही आप [इस] (http: // stackoverflow) के समान कुछ पूरा करने की कोशिश कर रहे हैं .com/प्रश्न/4704201/क्या-है-सबसे अच्छा तरह से करने के लिए ओवरराइड-enums)? –