当前位置: 首页>>代码示例>>C#>>正文


C# MethodReference.MatchMethodOnly方法代码示例

本文整理汇总了C#中Mono.Cecil.MethodReference.MatchMethodOnly方法的典型用法代码示例。如果您正苦于以下问题:C# MethodReference.MatchMethodOnly方法的具体用法?C# MethodReference.MatchMethodOnly怎么用?C# MethodReference.MatchMethodOnly使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Mono.Cecil.MethodReference的用法示例。


在下文中一共展示了MethodReference.MatchMethodOnly方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: DoesMatchMethod

 private static bool DoesMatchMethod(MethodReference mInternal, MethodReference m) {
     var mInternalDef = mInternal.Resolve();
     if (mInternalDef.GetCustomAttribute<JsRedirectAttribute>() != null) {
         // Can never return a redirected method
         return false;
     }
     // Look for methods with custom signatures
     var detailsAttr = mInternalDef.GetCustomAttribute<JsDetailAttribute>(true);
     if (detailsAttr != null) {
         var signature = detailsAttr.Properties.FirstOrDefault(x => x.Name == "Signature");
         if (signature.Name != null) {
             if (mInternal.Name != m.Name) {
                 return false;
             }
             var sigTypes = ((CustomAttributeArgument[])signature.Argument.Value)
                 .Select(x => ((TypeReference)x.Value).FullResolve(m))
                 .ToArray();
             var mReturnType = m.ReturnType.FullResolve(m);
             if (!mReturnType.IsSame(sigTypes[0])) {
                 return false;
             }
             for (int i = 0; i < m.Parameters.Count; i++) {
                 var mParameterType = m.Parameters[i].ParameterType.FullResolve(m);
                 if (!mParameterType.IsSame(sigTypes[i + 1])) {
                     return false;
                 }
             }
             return true;
         }
     }
     // Look for C# method that matches with custom 'this'
     Func<bool> isFakeThis = () => {
         if (mInternal.HasThis) {
             return false;
         }
         if (mInternal.Name != m.Name) {
             return false;
         }
         if (mInternal.Parameters.Count != m.Parameters.Count + 1) {
             return false;
         }
         if (mInternal.Parameters[0].GetCustomAttribute<JsFakeThisAttribute>() == null) {
             return false;
         }
         if (!mInternal.ReturnType.IsSame(m.ReturnType)) {
             return false;
         }
         for (int i = 1; i < mInternal.Parameters.Count; i++) {
             if (!mInternal.Parameters[i].ParameterType.IsSame(m.Parameters[i - 1].ParameterType)) {
                 return false;
             }
         }
         return true;
     };
     if (isFakeThis()) {
         return true;
     }
     // Look for C# method that match signature
     return mInternal.MatchMethodOnly(m);
 }
开发者ID:chrisdunelm,项目名称:DotNetWebToolkit,代码行数:60,代码来源:JsResolver.cs


注:本文中的Mono.Cecil.MethodReference.MatchMethodOnly方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。