Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C#] Sposób na dodawanie nowych funkcji bez dodawania linijek kodu w pliku głównym.

#1
[C#] Sposób na dodawanie nowych funkcji bez dodawania linijek kodu w pliku głównym.
Witam.

Powiedzmy że mamy plik .exe i .dll

.exe nasłuchuje porty i czeka jak ktoś się podłączy.

A następnie wykonuje poszczególne instrukcje. (w .dll)

np. kiedy wpiszemy "hello" to program coś robi i zwraca.

Problemem jest aby coś dodać... to trzeba prze-kompilować całe .exe i .dll.

chciałbym aby użytkownik wpisywał nazwę funkcji w C#, jeśli istnieje to wykonuje, jeśli nie to po prostu wyświetla błąd.

obecnie mam switche i muszę dodawać case aby zainicjować nową komendę.


Mam chwilową tylko .exe z podstawowymi funkcjami które są wewnątrz niej.

O i jeszcze jedno.
Ta się jakoś uruchamiać pliki .py w tle? bez konsoli? (Google nie wie)

Tu macie kawałek kodu:
Kod:
namespace ServerConsole
{
    public static class Wykonanie
    {

        public static void Wykonaj(string dane,Socket id)
        {
            try{
            string teodp;
            if (dane.IndexOf (".py") != -1) {
                    teodp = Python.Execute (dane);
                    wyslij(teodp,id);
                return;
            }


                switch (dane.ToLower ())
                {
                case "hello":
                    teodp = "Hi";
                break;
                case "time":
                    teodp = DateTime.Now.ToString();
                break;
                    default:
                    teodp = "NoComment";
                    break;
                }
                    
                wyslij(teodp,id);
            } catch { return;}
        }



        public static bool wyslij(string t, Socket sk)
        {
            try{
                byte[] odp = Encoding.UTF8.GetBytes (t);
                sk.Send (odp);

            }catch{return false;}
            return true;
        }

        public static string odbierz(Socket sk)
        {
            string tk = string.Empty;
            byte[] odp = new byte[1024];
            int i = sk.Receive (odp);
            if (i > 0) {
                tk = Encoding.UTF8.GetString (odp, 0, i);
                return tk;
            } else {
                return "0";
            }
        }
    }
}
 System operacyjny: windows_seven Przeglądarka: chrome
#2
RE: [C#] Sposób na dodawanie nowych funkcji bez dodawania linijek kodu w pliku głównym.
Problem rozwiązany za pomocą "MethodInfo".


Kod:
Type ta = typeof(KlasaWKtorejJestFunkcja);
MethodInfo taip = ta.GetMethod(kom);
taip.Invoke (ta, null);
Kod:
private static string WykonajDll(string komenda)
{
try{
string wynik = (string)typeof(Func).GetMethod(komenda).Invoke(typeof(Func),null);
return wynik;
}catch{return "-1";}
}
 System operacyjny: windows_seven Przeglądarka: chrome
Programy: Polecane / Nowe / Inne




Podobne wątki ([C#] Sposób na dodawanie nowych funkcji bez dodawania linijek kodu w pliku głównym.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Wykres Funkcji w Javie wanhelsing 4 13945 17.02.2018, 22:27
Ostatni post: wanhelsing
  Java początkujący problem ze zrozumieniem kodu MatL70 6 10392 20.06.2017, 12:24
Ostatni post: MatL70
  [C# WPF] Dodawanie elementów z listy do DataGrid Kamil 1 2 11231 25.05.2017, 20:03
Ostatni post: Kamil 1

Skocz do: