मैं एक विस्तार विधि है कि जाँच करता है लिखने के लिए यदि एक वस्तु टीएक्सटेंशन विधि की जाँच करने के
के उप वर्गयहाँ है कोशिश कर रहा हूँ मैं क्या किया है, लेकिन दृश्य स्टूडियो द्वारा स्वीकार नहीं ।
public static bool IsChildOf<T>(this object obj)
{
return (typeof(obj).IsSubclassOf(typeof(T)));
}
[Test()]
public void IsChildOfTest()
{
var dog = new Dog();
var isAnimal = dog.IsChildOf<Animal>();
Assert.That(isAnimal);
}
कोई विचार मैं इसे कैसे लिख सकता हूं?
साइड नोट: "बच्चे कक्षा" और "माता-पिता वर्ग" मामले में आप इसे का उपयोग किया है सीधे अपने परीक्षण तो कैसा लगेगा निराश हैं आपको इसके बजाय "व्युत्पन्न" कहना चाहिए। एक कार वाहन का बच्चा नहीं है; एक कार एक वाहन से निकलती है। मैं इसके बजाय आपकी विधि "DerivesFrom से" नाम दूंगा। –
dcastro
मैं सहमत हूं। संबंधों के बजाय "एक" संबंधों के लिए "माता-पिता" संबंधों के लिए बच्चे/अभिभावकीय शर्तों को आरक्षित करें। विशेष रूप से सूचियों या पेड़ जैसे पुनरावर्ती संबंधों में। – weston
टिप्पणियां: 'टाइपऑफ (एक्स)' को 'X' को एक प्रकार (जैसे आपकी' टी') की आवश्यकता होती है, न कि मूल्य या अभिव्यक्ति (जैसे आपकी 'ओबीजे')। क्या आप जानते हैं कि 'IsSubclassOf' गलत है अगर किसी प्रकार का इंटरफ़ेस या मान प्रकार है, और यदि दोनों वर्ग समान हैं? शायद आप 'IsAssignableFrom' चाहते थे? हालांकि, सी # कीवर्ड 'है' का उपयोग करना संभवतः आसान है। वेस्टन के जवाब देखें। –