當前位置: 首頁>>代碼示例>>C#>>正文


C# MethodInfo.GetBaseDefinition方法代碼示例

本文整理匯總了C#中System.Reflection.MethodInfo.GetBaseDefinition方法的典型用法代碼示例。如果您正苦於以下問題:C# MethodInfo.GetBaseDefinition方法的具體用法?C# MethodInfo.GetBaseDefinition怎麽用?C# MethodInfo.GetBaseDefinition使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。


在下文中一共展示了MethodInfo.GetBaseDefinition方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: InterfaceImpl

//引入命名空間
using System;
using System.Reflection;

interface Interf
{
   string InterfaceImpl(int n);
}

public class BaseClass
{
   public override string ToString()
   {
      return "Base";
   }

   public virtual void Method1()
   {
      Console.WriteLine("Method1");
   }

   public virtual void Method2()
   {
      Console.WriteLine("Method2");
   }

   public virtual void Method3()
   {
      Console.WriteLine("Method3");
   }
}

public class DerivedClass : BaseClass, Interf
{
   public string InterfaceImpl(int n)
   {
      return n.ToString("N");
   }

   public override void Method2()
   {
      Console.WriteLine("Derived.Method2");
   }

   public new void Method3()
   {
      Console.WriteLine("Derived.Method3");
   }
}

public class Example
{
   public static void Main()
   {
      Type t = typeof(DerivedClass);
      MethodInfo m, mb;
      string[] methodNames = { "ToString", "Equals", "InterfaceImpl",
                               "Method1", "Method2", "Method3" };

      foreach (var methodName in methodNames) {
         m = t.GetMethod(methodName);
         mb = m.GetBaseDefinition();
         Console.WriteLine("{0}.{1} --> {2}.{3}", m.ReflectedType.Name,
                           m.Name, mb.ReflectedType.Name, mb.Name);
      }
   }
}
開發者ID:.NET開發者,項目名稱:System.Reflection,代碼行數:67,代碼來源:MethodInfo.GetBaseDefinition

輸出:

DerivedClass.ToString --> Object.ToString
DerivedClass.Equals --> Object.Equals
DerivedClass.InterfaceImpl --> DerivedClass.InterfaceImpl
DerivedClass.Method1 --> BaseClass.Method1
DerivedClass.Method2 --> BaseClass.Method2
DerivedClass.Method3 --> DerivedClass.Method3

示例2: IsOverride

//引入命名空間
using System;
using System.Reflection;

public class ReflectionUtilities
{   
   public static bool IsOverride(MethodInfo method)
   {
      return ! method.Equals(method.GetBaseDefinition());
   }
}

public class Example
{
   public static void Main()
   {
      MethodInfo equals = typeof(Int32).GetMethod("Equals", 
                                        new Type[] { typeof(Object) } );
      Console.WriteLine("{0}.{1} is inherited: {2}", 
                        equals.ReflectedType.Name, equals.Name,
                        ReflectionUtilities.IsOverride(equals));
      
      equals = typeof(Object).GetMethod("Equals", 
                                        new Type[] { typeof(Object) } );
      Console.WriteLine("{0}.{1} is inherited: {2}", 
                        equals.ReflectedType.Name, equals.Name,
                        ReflectionUtilities.IsOverride(equals));
   }
}
開發者ID:.NET開發者,項目名稱:System.Reflection,代碼行數:29,代碼來源:MethodInfo.GetBaseDefinition

輸出:

Int32.Equals is inherited: True
Object.Equals is inherited: False


注:本文中的System.Reflection.MethodInfo.GetBaseDefinition方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。