本文整理汇总了C#中System.Compiler.Class.GetMatchingMethod方法的典型用法代码示例。如果您正苦于以下问题:C# Class.GetMatchingMethod方法的具体用法?C# Class.GetMatchingMethod怎么用?C# Class.GetMatchingMethod使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Compiler.Class
的用法示例。
在下文中一共展示了Class.GetMatchingMethod方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CheckMustOverride
public void CheckMustOverride(Class Class) {
if (Class == null) return;
Class baseClass = Class.BaseClass;
if (baseClass == null) return;
while (baseClass != null) {
MemberList members = baseClass.Members;
for (int i = 0, n = members == null ? 0 : members.Count; i < n; i++) {
Method method = members[i] as Method;
if (method == null) continue;
if (method.IsVirtual && method.GetAttribute(Runtime.MustOverrideAttribute) != null) {
// then Class had better have an implementation *and* it must also be marked
// as MustOverride
Method subTypeMethod = Class.GetMatchingMethod(method);
if (subTypeMethod == null) {
// Abstract classes are not required to implement a method marked as [MustOverride]
if (!Class.IsAbstract) {
this.HandleError(Class.Name, Error.MustOverrideMethodMissing, this.GetTypeName(Class), this.GetMethodSignature(method));
this.HandleRelatedError(method);
}
} else if (!Class.IsSealed && subTypeMethod.GetAttribute(Runtime.MustOverrideAttribute) == null) {
// Both concrete and abstract classes are required to mark a method as [MustOverride]
// if they do implement it.
this.HandleError(Class.Name, Error.MustOverrideMethodNotMarkedAsMustOverride, this.GetMethodSignature(subTypeMethod));
}
}
}
if (baseClass.IsAbstract) {
baseClass = baseClass.BaseClass;
} else {
baseClass = null; // stop after first non-abstract base class is checked
}
}
return;
}