कुछ वर्गों इस तरह देखते हुए बराबर है:ToString लौट मत करो,, GetHashCode, Type.GetMethods() के साथ GetType
public class MyBaseClass()
{
public void MyMethodOne()
{
}
public virtual void MyVirtualMethodOne()
{
}
}
public class MyMainClass : MyBaseClass()
{
public void MyMainClassMethod()
{
}
public override void MyVirtualMethodOne()
{
}
}
अगर मैं निम्नलिखित चलाएँ:
var myMethods= new MyMainClass().GetType().GetMethods();
मैं वापस मिल:
- MyMethodOne
- MyVirtualMethodOne
- MyMainClassMethod
- ToString
- बराबर
- GetHashCode
- GetType
मैं पिछले 4 तरीकों से कैसे बच सकते में myMethods
- ToString लौटाए जाने
- बराबर
- GetHashCode
- GetType
संपादित
अब तक, इस हैक काम कर रहा है, लेकिन सोच रहा था अगर वहाँ एक क्लीनर तरीका था:
var exceptonList = new[] { "ToString", "Equals", "GetHashCode", "GetType" };
var methods = myInstanceOfMyType.GetType().GetMethods()
.Select(x => x.Name)
.Except(exceptonList);
आप ['BindingFlags.DeclaredOnly'] (http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx) का उपयोग केवल 'MyMainClassMethod' और' MyVirtualMethodOne' प्राप्त करने के लिए कर सकते हैं, लेकिन मैं नहीं करता लगता है कि "ऑब्जेक्ट' में शामिल विधियों के लिए घोषित विधियों के लिए एक समान ध्वज है, लेकिन इसमें शामिल नहीं है"। – Rawling