Добавление функции к проекту

biryukovm

Client
Регистрация
19.05.2019
Сообщения
147
Благодарностей
10
Баллы
18
Привет всем.
Подскажите как добавить фкнци в проект я в С# не все понимаю

Задача такая есть ссылка хочу ее записывать в формате md5 и после делать сравнение на это значение

Код уже весь записал, но вот застрял на этом MD5
Нашел код на форуме , как запускать в коде оно работает но не вижу смысла его много раз повторять и хотелось бы эту обработку запихать как функцию в проект

Вот пример моего кода часть которую я пытаюсь добавить
C#:
    public class Obrabotka{
        public md5(string text_var)
        {
            
        //string input = project.Variables["input"].Value;//Получаем значение строки из переменной

            System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();// Создаем объект этого класса.
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(text_var));// Преобразуем входную строку в массив байт и вычисляем хэш
            StringBuilder md5hash = new StringBuilder();// Создаем новый Stringbuilder (Изменяемую строку) для набора байт
            for (int i = 0; i < data.Length; i++){// Преобразуем каждый байт хэша в шестнадцатеричную строку
                md5hash.Append(data[i].ToString("x0"));//преобразуем элемент в шестнадцатиричную строку длиной в два символа
            }
            //Возвращаем MD5 хеш для строки
            return md5hash.ToString();
            //return cmd.ExecuteNonQuery();
        }
    }
А вот полностью код
Весь код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;
using MySql.Data.MySqlClient;
using mp;

namespace ZennoLab.OwnCode
{
    /// <summary>
    /// A simple class of the common code
    /// </summary>
    public class CommonCode
    {
        /// <summary>
        /// Lock this object to mark part of code for single thread execution
        /// </summary>
        public static object SyncObject = new object();

        // Insert your code here
    }
}


namespace mp
{
    
    public class Sql
    {
        private IZennoPosterProjectModel Project;
        public Sql (IZennoPosterProjectModel project)
        {
            Project = project;
        }

        #region Cmd
        public MySql.Data.MySqlClient.MySqlCommand Cmd ()
        {
            
            string hostDB = Project.Variables["DB_HOST"].Value;
            string userDB = Project.Variables["DB_USER"].Value;
            string passDB = Project.Variables["DB_PASS"].Value;
            string nameOfDB = Project.Variables["DB_NAME"].Value;
            string charsetDB = Project.Variables["DB_CHARSET"].Value;
            
            string connectString = String.Format("Data Source={0};UserId={1};Password={2};database={3};Charset={4};", hostDB, userDB, passDB, nameOfDB, charsetDB);

            var cmd = new MySql.Data.MySqlClient.MySqlCommand();
            try{cmd.Connection = new MySql.Data.MySqlClient.MySqlConnection(connectString);}catch(Exception e){
                throw new Exception( "MySql сбой соединения" );
                
            } return cmd;
        }
        #endregion
    }
    
    public class Obrabotka{
        public md5(string text_var)
        {
            
        //string input = project.Variables["input"].Value;//Получаем значение строки из переменной

            System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();// Создаем объект этого класса.
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(text_var));// Преобразуем входную строку в массив байт и вычисляем хэш
            StringBuilder md5hash = new StringBuilder();// Создаем новый Stringbuilder (Изменяемую строку) для набора байт
            for (int i = 0; i < data.Length; i++){// Преобразуем каждый байт хэша в шестнадцатеричную строку
                md5hash.Append(data[i].ToString("x0"));//преобразуем элемент в шестнадцатиричную строку длиной в два символа
            }
            //Возвращаем MD5 хеш для строки
            return md5hash.ToString();
            //return cmd.ExecuteNonQuery();
        }
    }
}

#region SqlExtensions
public static class SqlExtensions
{
    public static int ExNonQ (this MySql.Data.MySqlClient.MySqlCommand cmd, string query)
    {
        cmd.CommandText = query;
        return cmd.ExecuteNonQuery();
    }
    
    public static long ExQWithLastID (this MySql.Data.MySqlClient.MySqlCommand cmd, string query)
    {
        cmd.CommandText = query;
        cmd.ExecuteNonQuery();

        cmd.CommandText = @"SELECT last_insert_id();";
        return Convert.ToInt64(cmd.ExecuteScalar());
    }
    
    public static object ExScalar (this MySql.Data.MySqlClient.MySqlCommand cmd, string query)
    {
        cmd.CommandText = query;
        return cmd.ExecuteScalar();
    }
    
    public static MySql.Data.MySqlClient.MySqlDataReader ExReader (this MySql.Data.MySqlClient.MySqlCommand cmd, string query)
    {
        cmd.CommandText = query;
        return cmd.ExecuteReader();
    }
    
    public static int DbLock (this MySql.Data.MySqlClient.MySqlCommand cmd, string query)
    {
        cmd.CommandText = "LOCK TABLES "+query;
        return cmd.ExecuteNonQuery();
    }
    
    public static int DbUnLock (this MySql.Data.MySqlClient.MySqlCommand cmd)
    {
        cmd.CommandText="UNLOCK TABLES;";
        return cmd.ExecuteNonQuery();
    }
    public static IZennoPosterProjectModel Debug(this IZennoPosterProjectModel project, string message, bool showInPoster = false)
    {
        project.SendInfoToLog(message, showInPoster);
        return project;
    }
    public static IZennoPosterProjectModel Info(this IZennoPosterProjectModel project, string message, bool showInPoster = true)
    {
        project.SendInfoToLog(message, showInPoster);
        return project;
    }
    public static IZennoPosterProjectModel Warning(this IZennoPosterProjectModel project, string message, bool showInPoster = true)
    {
        project.SendWarningToLog(message, showInPoster);
        return project;
    }
    public static IZennoPosterProjectModel Error(this IZennoPosterProjectModel project, string message, bool showInPoster = true)
    {
        project.SendErrorToLog(message, showInPoster);
        return project;
    }
    

}
#endregion
Подскажите где я не правильно написал по синтаксису.
Суть такая чтоб в проекте указать так
C#:
Obrabotka.md5(a.GetAttribute("href"));
Понимаю прекрасно что где-то я не знаю синтаксис написания более правильно, но не судите строго лучше помогите поправить код
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 698
Баллы
113
общий код
C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;

namespace ZennoLab.OwnCode
{
    /// <summary>
    /// A simple class of the common code
    /// </summary>
    public class CommonCode
    {
        /// <summary>
        /// Lock this object to mark part of code for single thread execution
        /// </summary>
        public static object SyncObject = new object();

        // Insert your code here
    }
}


namespace mp
{
    
    public class Sql
    {
        private IZennoPosterProjectModel Project;
        public Sql (IZennoPosterProjectModel project)
        {
            Project = project;
        }


    }
    
    public class Obrabotka{
        public static string md5(string text_var)
        {
            
        //string input = project.Variables["input"].Value;//Получаем значение строки из переменной

            System.Security.Cryptography.MD5 md5Hasher = System.Security.Cryptography.MD5.Create();// Создаем объект этого класса.
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(text_var));// Преобразуем входную строку в массив байт и вычисляем хэш
            StringBuilder md5hash = new StringBuilder();// Создаем новый Stringbuilder (Изменяемую строку) для набора байт
            for (int i = 0; i < data.Length; i++){// Преобразуем каждый байт хэша в шестнадцатеричную строку
                md5hash.Append(data[i].ToString("x0"));//преобразуем элемент в шестнадцатиричную строку длиной в два символа
            }
            //Возвращаем MD5 хеш для строки
            return md5hash.ToString();
        }
    }
}
в директивы прописать
52769

в кубик c#
52770

удалил из общего кода все с mySql там вообще все не правильно. посмотрите этот пример и постепенно переносите функции под mySql
 

biryukovm

Client
Регистрация
19.05.2019
Сообщения
147
Благодарностей
10
Баллы
18

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 698
Баллы
113
с mySql ничем помочь не могу. я скачал архив из того поста, но там не хватает некоторых dll. если и у вас не работает, то наверно надо обратиться к автору поста по mySql
если у вас с mySql все ровно то перенесите из моего примера class Obrabotka в свой код. и пропишите в using нужный namespace . а можно и не прописывать. просто в кубике обращаться будете как
mp.Obrabotka.md5()
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)