एक PropertyInfo ऑब्जेक्ट को देखते हुए, मैं कैसे जांच सकता हूं कि संपत्ति का सेटटर सार्वजनिक है?संपत्ति सेटर सार्वजनिक है या नहीं, यह जांचने के लिए कैसे करें
उत्तर
चेक क्या आप GetSetMethod
से वापस पाने:
if (propInfo.CanWrite && propInfo.GetSetMethod(/*nonPublic*/ true).IsPublic)
{
// The setter exists and is public.
}
नोट:
MethodInfo setMethod = propInfo.GetSetMethod();
if (setMethod == null)
{
// The setter doesn't exist or isn't public.
}
या, Richard's answer पर एक अलग स्पिन डाल करने के लिए कि अगर आप ऐसा करना चाहते हैं, तब तक एक संपत्ति सेट करें जब तक कि उसके पास एक सेटटर हो, आप कार्य नहीं करते हैं वाई परवाह है कि सेटटर सार्वजनिक है या नहीं। तुम बस के लिए इसका इस्तेमाल कर सकते हैं, सार्वजनिक या निजी:
// This will give you the setter, whatever its accessibility,
// assuming it exists.
MethodInfo setter = propInfo.GetSetMethod(/*nonPublic*/ true);
if (setter != null)
{
// Just be aware that you're kind of being sneaky here.
setter.Invoke(target, new object[] { value });
}
.NET गुण वास्तव में एक प्राप्त और सेट विधि के चारों ओर एक रैपिंग खोल हैं।
आप प्रॉपर्टीइन्फो पर GetSetMethod
विधि का उपयोग कर सकते हैं, जो Setter को संदर्भित MethodInfo लौटा रहा है। आप GetGetMethod
के साथ एक ही काम कर सकते हैं।
गेटटर/सेटर गैर-सार्वजनिक होने पर ये विधियां शून्य हो जाएंगी।
सही कोड यहाँ है:
bool IsPublic = propertyInfo.GetSetMethod() != null;
public class Program
{
class Foo
{
public string Bar { get; private set; }
}
static void Main(string[] args)
{
var prop = typeof(Foo).GetProperty("Bar");
if (prop != null)
{
// The property exists
var setter = prop.GetSetMethod(true);
if (setter != null)
{
// There's a setter
Console.WriteLine(setter.IsPublic);
}
}
}
}
आप छोटा सा अफसर विधि का उपयोग तक पहुँच निर्धारित करने के लिए, PropertyInfo.GetGetMethod() या PropertyInfo.GetSetMethod() का उपयोग कर की जरूरत है।
// Get a PropertyInfo instance...
var info = typeof(string).GetProperty ("Length");
// Then use the get method or the set method to determine accessibility
var isPublic = (info.GetGetMethod(true) ?? info.GetSetMethod(true)).IsPublic;
हालांकि, ध्यान दें गेटर & सेटर अलग accessibilities हो सकता है, उदा .:
class Demo {
public string Foo {/* public/* get; protected set; }
}
तो तुम कल्पना नहीं कर सकते कि गेटर और सेटर ही दृश्यता होगा।
- 1. यह जांचने के लिए कि सत्र मौजूद है या नहीं?
- 2. यह जांचने के लिए कि फ़ाइल बाइनरी है या नहीं?
- 3. जावास्क्रिप्ट के साथ var खाली नहीं है या नहीं, यह जांचने के लिए कैसे करें?
- 4. कोई सत्र अमान्य है या नहीं, यह जांचने के लिए
- 5. मानचित्र में कुंजी या मूल्य मौजूद है या नहीं, यह जांचने के लिए कैसे करें?
- 6. डेटाबेस में कोई तालिका या स्तंभ मौजूद है या नहीं, यह जांचने के लिए कैसे करें?
- 7. संपत्ति नहीं गेटर और सेटर
- 8. जावास्क्रिप्ट में सरणी तत्व मौजूद है या नहीं, यह जांचने के लिए कैसे करें?
- 9. जावा में JSON ऑब्जेक्ट खाली है या नहीं, यह जांचने के लिए कैसे करें?
- 10. परिवर्तन ट्रैकिंग सक्षम है या नहीं, यह जांचने के लिए कैसे करें
- 11. हास्केल में एक स्ट्रिंग दूसरे से छोटा है या नहीं, यह जांचने के लिए कैसे करें?
- 12. SQL सर्वर में कोई डेटाबेस मौजूद है या नहीं, यह जांचने के लिए कैसे करें?
- 13. Emacs Lisp में स्ट्रिंग खाली है या नहीं, यह जांचने के लिए कैसे करें?
- 14. पैरामीटर में पैरामीटर मौजूद है या नहीं, यह जांचने के लिए कैसे करें?
- 15. SQL सर्वर में कोई तालिका चर खाली है या नहीं, यह जांचने के लिए कैसे करें?
- 16. PHP में JSON ऑब्जेक्ट खाली है या नहीं, यह जांचने के लिए कैसे करें?
- 17. PHP: क्लाइंट स्थानीय है या नहीं, यह जांचने के लिए कैसे करें?
- 18. PHP मेल() सक्षम है या नहीं, यह जांचने के लिए कैसे करें?
- 19. डेलाइट बचत समय में समय ऑफसेट क्या है या नहीं, यह जांचने के लिए कैसे करें?
- 20. एंड्रॉइड में ऐप स्टार्टअप में इंटरनेट उपलब्ध है या नहीं, यह जांचने के लिए कैसे करें?
- 21. यह जांचने के लिए कि कोई फ़ंक्शन सार्वजनिक है या PHP
- 22. यह जांचने के लिए कि कोई int शून्य या खाली नहीं है या नहीं?
- 23. एक संपत्ति गेटर या सेटर विधि
- 24. अगर किसी विशेषता में कोई सार्वजनिक सेटर
- 25. सार्वजनिक गेटर के साथ सार संपत्ति, कंक्रीट वर्ग में निजी सेटर को परिभाषित करें?
- 26. संपत्ति सेटर को लपेटना
- 27. संपत्ति के लिए, या संपत्ति के लिए नहीं?
- 28. सर्वर कैसे PHP संस्करण 5 या उससे ऊपर है या नहीं, यह जांचने के लिए कैसे करें?
- 29. यह जांचने के लिए कि कोई चर एक संख्या या स्ट्रिंग है या नहीं?
- 30. यह जांचने के लिए कि कोई फ़ाइल निर्देशिका या पाइथन में नियमित फ़ाइल है या नहीं?
+1: यह 'GetSetMethod() से बेहतर है। IsPublic' : यह तब भी काम करता है जब संपत्ति में * नहीं * सेटर होता है। – Ani
धन्यवाद @ दैन ताओ। यह सबसे अच्छा जवाब है: ऊपर उठाया! –
धन्यवाद @ दैन ताओ। :) –