public PhpInvokeBinderKey(string methodName, int genericParamsCount, int paramsCount, DTypeDesc callerClassContext, Type returnType) { this.methodName = methodName; this.genericArgumentCount = genericParamsCount; this.argumentCount = paramsCount; this.callerClassContext = callerClassContext; this.returnType = returnType; StringBuilder sb = new StringBuilder((methodName != null ? methodName.Length : 0) + returnType.Name + 16); sb.Append(methodName); sb.Append("|"); sb.Append(argumentCount); sb.Append("|"); sb.Append(genericArgumentCount); sb.Append("|"); sb.Append(returnType.Name); sb.Append("|"); if (callerClassContext != null) { sb.Append(callerClassContext.GetHashCode()); } stringKey = sb.ToString(); }
public static CallSiteBinder /*!*/ GetProperty(string fieldName, DTypeDesc classContext, bool issetSemantics, Type /*!*/ returnType) { // the binder cache key string key = string.Format("{0}'{1}'{2}'{3}", fieldName ?? "$", (classContext != null) ? (classContext.GetHashCode().ToString()) : string.Empty, issetSemantics ? "1" : "0", returnType.FullName ); lock (getMemberBinders) { PhpGetMemberBinder binder; if (!getMemberBinders.TryGetValue(key, out binder)) { getMemberBinders[key] = binder = new PhpGetMemberBinder(fieldName, classContext, issetSemantics, returnType); } return(binder); } throw new NotImplementedException(); }
public static CallSiteBinder/*!*/GetProperty(string fieldName, DTypeDesc classContext, bool issetSemantics, Type/*!*/returnType) { // the binder cache key string key = string.Format("{0}'{1}'{2}'{3}", fieldName ?? "$", (classContext != null) ? (classContext.GetHashCode().ToString()) : string.Empty, issetSemantics ? "1" : "0", returnType.FullName ); lock (getMemberBinders) { PhpGetMemberBinder binder; if (!getMemberBinders.TryGetValue(key, out binder)) getMemberBinders[key] = binder = new PhpGetMemberBinder(fieldName, classContext, issetSemantics, returnType); return binder; } throw new NotImplementedException(); }