本文整理汇总了C#中System.Reflection.MethodInfo.GetSignature方法的典型用法代码示例。如果您正苦于以下问题:C# MethodInfo.GetSignature方法的具体用法?C# MethodInfo.GetSignature怎么用?C# MethodInfo.GetSignature使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Reflection.MethodInfo
的用法示例。
在下文中一共展示了MethodInfo.GetSignature方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ContainsMethod
public static bool ContainsMethod(this MethodInfo[] methods, MethodInfo key)
{
if (methods.Length == 0) return false;
return methods.Select(
(x) =>
{
return x.GetSignature().Equal(key.GetSignature()) &
x.Name == key.Name;
}).Aggregate(
(a, b) => { return a | b; });
}
示例2: FindInterceptMethodElement
private InterceptMethodElement FindInterceptMethodElement(InterceptContractElement interceptContractElement, MethodInfo method)
{
if (interceptContractElement == null)
return null;
if (interceptContractElement.Methods == null)
return null;
foreach (InterceptMethodElement interceptMethodElement in interceptContractElement.Methods)
{
string methodSignature = null;
if (method.IsGenericMethod)
methodSignature = method.GetGenericMethodDefinition().GetSignature();
else
methodSignature = method.GetSignature();
if (interceptMethodElement.Signature.Equals(methodSignature))
return interceptMethodElement;
}
return null;
}
示例3: AddInterceptorRef
/// <summary>
/// Adds an interception reference to the specified contract and the method.
/// </summary>
/// <param name="contractType">The type of the contract.</param>
/// <param name="method">The method.</param>
/// <param name="name">The name of the interception reference.</param>
public void AddInterceptorRef(Type contractType, MethodInfo method, string name)
{
if (this.config.Interception != null)
{
if (this.config.Interception.Contracts != null)
{
foreach (InterceptContractElement interceptContract in this.config.Interception.Contracts)
{
if (interceptContract.Type.Equals(contractType.AssemblyQualifiedName))
{
if (interceptContract.Methods != null)
{
foreach (InterceptMethodElement interceptMethod in interceptContract.Methods)
{
if (interceptMethod.Signature.Equals(method.GetSignature()))
{
if (interceptMethod.InterceptorRefs != null)
{
foreach (InterceptorRefElement interceptorRef in interceptMethod.InterceptorRefs)
{
if (interceptorRef.Name.Equals(name))
return;
}
interceptMethod.InterceptorRefs.Add(new InterceptorRefElement { Name = name });
}
else
{
interceptMethod.InterceptorRefs = new InterceptorRefElementCollection();
interceptMethod.InterceptorRefs.Add(new InterceptorRefElement { Name = name });
}
return;
}
}
InterceptMethodElement interceptMethodAdd = new InterceptMethodElement();
interceptMethodAdd.Signature = method.GetSignature();
interceptMethodAdd.InterceptorRefs = new InterceptorRefElementCollection();
interceptMethodAdd.InterceptorRefs.Add(new InterceptorRefElement { Name = name });
interceptContract.Methods.Add(interceptMethodAdd);
}
else
{
interceptContract.Methods = new InterceptMethodElementCollection();
InterceptMethodElement interceptMethodAdd = new InterceptMethodElement();
interceptMethodAdd.Signature = method.GetSignature();
interceptMethodAdd.InterceptorRefs = new InterceptorRefElementCollection();
interceptMethodAdd.InterceptorRefs.Add(new InterceptorRefElement { Name = name });
interceptContract.Methods.Add(interceptMethodAdd);
}
return;
}
}
InterceptContractElement interceptContractAdd = new InterceptContractElement();
interceptContractAdd.Type = contractType.AssemblyQualifiedName;
interceptContractAdd.Methods = new InterceptMethodElementCollection();
InterceptMethodElement interceptMethodAddToContract = new InterceptMethodElement();
interceptMethodAddToContract.Signature = method.GetSignature();
interceptMethodAddToContract.InterceptorRefs = new InterceptorRefElementCollection();
interceptMethodAddToContract.InterceptorRefs.Add(new InterceptorRefElement { Name = name });
interceptContractAdd.Methods.Add(interceptMethodAddToContract);
this.config.Interception.Contracts.Add(interceptContractAdd);
}
else
{
this.config.Interception.Contracts = new InterceptContractElementCollection();
InterceptContractElement interceptContractAdd = new InterceptContractElement();
interceptContractAdd.Type = contractType.AssemblyQualifiedName;
interceptContractAdd.Methods = new InterceptMethodElementCollection();
InterceptMethodElement interceptMethodAddToContract = new InterceptMethodElement();
interceptMethodAddToContract.Signature = method.GetSignature();
interceptMethodAddToContract.InterceptorRefs = new InterceptorRefElementCollection();
interceptMethodAddToContract.InterceptorRefs.Add(new InterceptorRefElement { Name = name });
interceptContractAdd.Methods.Add(interceptMethodAddToContract);
this.config.Interception.Contracts.Add(interceptContractAdd);
}
}
else
{
this.config.Interception = new InterceptionElement();
this.config.Interception.Contracts = new InterceptContractElementCollection();
InterceptContractElement interceptContractAdd = new InterceptContractElement();
interceptContractAdd.Type = contractType.AssemblyQualifiedName;
interceptContractAdd.Methods = new InterceptMethodElementCollection();
InterceptMethodElement interceptMethodAddToContract = new InterceptMethodElement();
interceptMethodAddToContract.Signature = method.GetSignature();
interceptMethodAddToContract.InterceptorRefs = new InterceptorRefElementCollection();
interceptMethodAddToContract.InterceptorRefs.Add(new InterceptorRefElement { Name = name });
interceptContractAdd.Methods.Add(interceptMethodAddToContract);
this.config.Interception.Contracts.Add(interceptContractAdd);
}
}
示例4: onRegistered
private static void onRegistered(MethodInfo method, RunAtAttribute runAt, int index)
{
if (method.IsConstructor) ThrowHelper.Throw("{0} cannot be called @sever since it is constructor.", method.GetSignature());
if (method.IsVirtual) ThrowHelper.Throw("{0} cannot be called @sever since it is virtual.", method.GetSignature());
sb.Append("case ").Append(index).Append(":try{");
if (!method.IsStatic || method.GetParameters().Length > 0) {
sb.Append("args=Serializer.Deserialize(context");
if (!method.IsStatic)
sb.Append(",typeof(").Append(Name(method.DeclaringType)).Append(')');
foreach (var param in method.GetParameters()) {
sb.Append(",typeof(").Append(Name(param.ParameterType)).Append(')');
}
sb.Append(");");
}
if (method.ReturnParameter.ParameterType != typeof(void))
sb.Append("context.Response.Write(\"(\"+Serializer.Serialize(");
if (method.IsSpecialName) {
if (method.Name.StartsWith("get_")) {
appendThisOrType(method);
sb.Append('.').Append(method.Name.Substring(4));
} else if (method.Name.StartsWith("set_")) {
appendThisOrType(method);
sb.Append('.').Append(method.Name.Substring(4)).Append("=args[");
sb.Append(method.IsStatic ? 0 : 1);
sb.Append("]");
} else {
ThrowHelper.Throw("Special name method {0} cannot be called @server.", method.GetSignature());
}
} else {
appendThisOrType(method);
sb.Append('.').Append(method.Name).Append('(');
var parameters = method.GetParameters();
if (parameters.Length > 0) {
for (int j = 0; j < parameters.Length; ++j) {
sb.Append('(').Append(Name(parameters[j].ParameterType)).Append(")args[").Append(method.IsStatic ? j : (j + 1)).Append("],");
}
--sb.Length;
}
sb.Append(")");
}
if (method.ReturnParameter.ParameterType != typeof(void)) {
sb.Append(")+\")\")");
} else {
sb.Append(";context.Response.Write(\"0\")");
}
sb.Append(";}catch(Exception e){context.Response.Write(");
if (runAt.HideExceptionMessage) {
sb.Append("\"throw Error()\"");
} else {
sb.Append("\"throw Error(\"+Serializer.Serialize(e.Message)+\")\"");
}
sb.Append(");}break;");
}