bool IsUsedInMethod(IField analyzedField, IMethod method, CodeMappingInfo mappingInfo, AnalyzerContext context) { if (method.MetadataToken.IsNil) { return(false); } var module = method.ParentModule.PEFile; foreach (var part in mappingInfo.GetMethodParts((MethodDefinitionHandle)method.MetadataToken)) { var md = module.Metadata.GetMethodDefinition(part); if (!md.HasBody()) { continue; } MethodBodyBlock body; try { body = module.Reader.GetMethodBody(md.RelativeVirtualAddress); } catch (BadImageFormatException) { return(false); } if (ScanMethodBody(analyzedField, method, body)) { return(true); } } return(false); }
/// <summary> /// 更新一条数据 /// </summary> public static bool Update(CodeMappingInfo model) { try { int rowsAffected = 0; SqlParameter[] parameters = { new SqlParameter("@id", SqlDbType.Int, 4), new SqlParameter("@pmodeCode", SqlDbType.VarChar, 20), new SqlParameter("@suppId", SqlDbType.Int, 4), new SqlParameter("@suppCode", SqlDbType.VarChar, 20) }; parameters[0].Value = model.id; parameters[1].Value = model.pmodeCode; parameters[2].Value = model.suppId; parameters[3].Value = model.suppCode; rowsAffected = DataBase.ExecuteNonQuery(CommandType.StoredProcedure, "proc_codemapping_Update", parameters); if (rowsAffected > 0) { return(true); } else { return(false); } } catch (Exception ex) { ExceptionHandler.HandleException(ex); return(false); } }
/// <summary> /// 增加一条数据 /// </summary> public static int Add(CodeMappingInfo model) { try { int rowsAffected; SqlParameter[] parameters = { new SqlParameter("@id", SqlDbType.Int, 4), new SqlParameter("@pmodeCode", SqlDbType.VarChar, 20), new SqlParameter("@suppId", SqlDbType.Int, 4), new SqlParameter("@suppCode", SqlDbType.VarChar, 20) }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Value = model.pmodeCode; parameters[2].Value = model.suppId; parameters[3].Value = model.suppCode; rowsAffected = DataBase.ExecuteNonQuery(CommandType.StoredProcedure, "proc_codemapping_ADD", parameters); return((int)parameters[0].Value); } catch (Exception ex) { ExceptionHandler.HandleException(ex); return(0); } }
bool IsUsedInMethod(ITypeDefinition analyzedEntity, IMethod method, CodeMappingInfo mappingInfo, AnalyzerContext context) { if (method.MetadataToken.IsNil) { return(false); } var module = method.ParentModule.PEFile; var md = module.Metadata.GetMethodDefinition((MethodDefinitionHandle)method.MetadataToken); if (!md.HasBody()) { return(false); } return(ScanMethodBody(analyzedEntity, method, module.Reader.GetMethodBody(md.RelativeVirtualAddress))); }
/// <summary> /// 得到一个对象实体 /// </summary> public static CodeMappingInfo GetModel(int id) { try { SqlParameter[] parameters = { new SqlParameter("@id", SqlDbType.Int, 4) }; parameters[0].Value = id; CodeMappingInfo model = new CodeMappingInfo(); DataSet ds = DataBase.ExecuteDataset(CommandType.StoredProcedure, "proc_codemapping_GetModel", parameters); if (ds.Tables[0].Rows.Count > 0) { if (ds.Tables[0].Rows[0]["id"].ToString() != "") { model.id = int.Parse(ds.Tables[0].Rows[0]["id"].ToString()); } model.pmodeCode = ds.Tables[0].Rows[0]["pmodeCode"].ToString(); if (ds.Tables[0].Rows[0]["suppId"].ToString() != "") { model.suppId = int.Parse(ds.Tables[0].Rows[0]["suppId"].ToString()); } model.suppCode = ds.Tables[0].Rows[0]["suppCode"].ToString(); return(model); } else { return(null); } } catch (Exception ex) { ExceptionHandler.HandleException(ex); return(null); } }
void CollectNamespaces(IEntity entity, MetadataModule module, CodeMappingInfo mappingInfo = null) { if (entity == null || entity.MetadataToken.IsNil) { return; } if (mappingInfo == null) { mappingInfo = CSharpDecompiler.GetCodeMappingInfo(entity.ParentModule.PEFile, entity.MetadataToken); } switch (entity) { case ITypeDefinition td: namespaces.Add(td.Namespace); HandleAttributes(td.GetAttributes()); HandleTypeParameters(td.TypeParameters); foreach (var baseType in td.DirectBaseTypes) { CollectNamespacesForTypeReference(baseType); } foreach (var nestedType in td.NestedTypes) { CollectNamespaces(nestedType, module, mappingInfo); } foreach (var field in td.Fields) { CollectNamespaces(field, module, mappingInfo); } foreach (var property in td.Properties) { CollectNamespaces(property, module, mappingInfo); } foreach (var @event in td.Events) { CollectNamespaces(@event, module, mappingInfo); } foreach (var method in td.Methods) { CollectNamespaces(method, module, mappingInfo); } break; case IField field: HandleAttributes(field.GetAttributes()); CollectNamespacesForTypeReference(field.ReturnType); break; case IMethod method: HandleAttributes(method.GetAttributes()); HandleAttributes(method.GetReturnTypeAttributes()); CollectNamespacesForTypeReference(method.ReturnType); foreach (var param in method.Parameters) { HandleAttributes(param.GetAttributes()); CollectNamespacesForTypeReference(param.Type); } HandleTypeParameters(method.TypeParameters); var reader = module.PEFile.Reader; var parts = mappingInfo.GetMethodParts((MethodDefinitionHandle)method.MetadataToken).ToList(); foreach (var part in parts) { HandleOverrides(part.GetMethodImplementations(module.metadata), module); var methodDef = module.metadata.GetMethodDefinition(part); if (method.HasBody) { MethodBodyBlock body; try { body = reader.GetMethodBody(methodDef.RelativeVirtualAddress); } catch (BadImageFormatException) { continue; } CollectNamespacesFromMethodBody(body, module); } } break; case IProperty property: HandleAttributes(property.GetAttributes()); CollectNamespaces(property.Getter, module, mappingInfo); CollectNamespaces(property.Setter, module, mappingInfo); break; case IEvent @event: HandleAttributes(@event.GetAttributes()); CollectNamespaces(@event.AddAccessor, module, mappingInfo); CollectNamespaces(@event.RemoveAccessor, module, mappingInfo); break; } }
bool IsUsedInMethod(ITypeDefinition analyzedEntity, IMethod method, CodeMappingInfo mappingInfo, AnalyzerContext context) { return(ScanMethodBody(analyzedEntity, method, context.GetMethodBody(method))); }