मुझे इस तरह एक अमूर्त वर्ग मिला है;वर्तमान प्रकार को स्थिर, सामान्य विधि में प्राप्त करना?
public abstract PropertyBase
{
public static System.Type GetMyType()
{
return !!!SOME MAGIC HERE!!!
}
}
मैं इसे उपवर्ग करना चाहते हैं, और जब मैं स्थिर GetMyType() कहते हैं, मैं उपवर्ग के प्रकार वापसी करना चाहते हैं। तो अगर मैं एक उप प्रकार घोषित करता हूं;
public class ConcreteProperty: PropertyBase {}
फिर जब मैं फोन
var typeName = ConcreteProperty.GetMyType().Name;
मैं उम्मीद 'TypeName' पर सेट हो करने के लिए "ConcreteProperty।" मुझे संदेह है कि ऐसा करने का कोई तरीका नहीं है, लेकिन मुझे कोई दिलचस्पी है अगर कोई भी इस जानकारी को पाने का तरीका जानता है।
(विशेष समस्या मैं हल करने के लिए कोशिश कर रहा हूँ WPF में निर्भरता गुणों के शब्दाडंबर है, मैं इस तरह कुछ करने के लिए सक्षम होने के लिए हमे खुशी
class NamedObject : DependencyObject
{
// declare a name property as a type, not an instance.
private class NameProperty : PropertyBase<string, NamedObject> { }
// call static methods on the class to read the property
public string Name
{
get { return NameProperty.Get(this); }
set { NameProperty.Set(this, value); }
}
}
और मैं लगभग एक है कार्यान्वयन, लेकिन मैं नहीं काफी जानकारी मैं अपने NameProperty कक्षा से बाहर की जरूरत प्राप्त कर सकते हैं)
स्थिर होने का क्या कारण है? आभासी या सार के रूप में घोषित आपको समस्या होगी –
क्यों स्थिति: यह एक अजीब कोण है, और एक सी # वास्तव में इसके लिए डिज़ाइन नहीं किया गया है। कभी-कभी आपके प्रकार में केवल एक मान हो सकता है। तो 'वर्ग स्टीव: व्यक्ति {}' एक प्रकार की घोषणा करता है, लेकिन चूंकि केवल एक ही संभावित मूल्य है, इसलिए 'स्टीव' वर्ग भी एक उदाहरण की पहचान करता है। 'स्टीव' प्रकार घोषित करने से सिंगलटन 'स्टीव' घोषित किया जाता है। डब्ल्यूपीएफ डीपी इस तरह हैं; वे यह तय नहीं कर सकते कि वे उदाहरण डेटा, मेटाडेटा या प्रकार हैं। मैं उन्हें सभी को एक कोड निर्माण में बदलने की कोशिश कर रहा हूं। यह सभी सट्टा एटीएम है, लेकिन मुझे इसके लिए अपने आप को आगे बढ़ाने में दिलचस्पी है। –
यहां मुझे इसकी आवश्यकता क्यों है: बॉयलरप्लेट टाइपडिस्क्रिप्टर कोड के लिए आंशिक कक्षा उत्पन्न करना। गतिशील रूप से निर्मित संपत्ति नाम प्रकार पर परिभाषित गुणों के साथ संघर्ष नहीं कर सकते हैं, इसलिए मुझे चेक करने के लिए प्रकार के भीतर संपत्ति नामों की एक सूची चाहिए। यह अधिक बॉयलरप्लेट कोड है और इसलिए कोडेजन में चला जाता है। यह स्थैतिक के लिए भी एक आदर्श उम्मीदवार है, क्योंकि यह नहीं बदलता है।इसलिए मुझे एक स्थिर निर्माता के भीतर वर्तमान प्रकार की गुणों वाली एक सूची उत्पन्न करने की आवश्यकता है। खैर, नरक, अब मुझे टी 4 टेम्पलेट में जादू तारों का उपयोग करने की आवश्यकता है। – Will