यदि मैं यहटी के समय एक वैध कस्टम विशेषता पैरामीटर नहीं है जब एक Nullable <T> क्यों है?
public enum Hungry
{
Somewhat,
Very,
CouldEatMySocks
}
की तरह एक enum और इस
public class HungerAttribute : Attribute
{
public Hungry HungerLevel { get; set; }
public Hungry? NullableHungerLevel { get; set; }
}
की तरह एक कस्टम विशेषता है कि मैं इस
[Hunger(HungerLevel = Hungry.CouldEatMySocks)]
public class Thing1
कर सकते हैं, लेकिन मैं इस
ऐसा नहीं कर सकते[Hunger(NullableHungerLevel = Hungry.CouldEatMySocks)]
public class Thing2
यह एक त्रुटि उत्पन्न करता है जो कहता है "'NullableHungerLevel' मान्य नाम विशेषता तर्क नहीं है क्योंकि यह मान्य विशेषता पैरामीटर प्रकार नहीं है"।
इसकी अनुमति क्यों नहीं है? मैं समझता हूं कि मूल रूप से यह स्वीकार्य प्रकारों की सूची पर नहीं है। मान्य प्रकार प्राइमेटिव, एनम्स, स्ट्रिंग, टाइप, और पिछले प्रकार के एक आयामी सरणी प्रतीत होते हैं।
क्या यह एक पुराना नियम है जिसे न्यूलबल के साथ आने पर अपडेट नहीं किया गया था?
class Program
{
[Hunger()]
static void Main(string[] args)
{
}
public sealed class HungerAttribute : Attribute
{
private readonly Hungry? _HungerLevel;
public Hungry? HungerLevel { get { return _HungerLevel; } }
public bool IsNull { get { return !_HungerLevel.HasValue; } }
public HungerAttribute()
{
}
//Or:
public HungerAttribute(Hungry level)
{
_HungerLevel = level;
}
}
public enum Hungry { Somewhat, Very, CouldEatMySocks }
}
मैं समझता हूँ कि तुम दोनों गुणों का उपयोग करने के लिए नहीं जा रहे हैं:
के लिए जाँच करने के लिए जब मैं मूल रूप में यह .NET 3.5 VS2008 यह अभी भी भर आया वीएस -2010 बीटा 1 में काम नहीं करता है। –