Diskuze: lze přidat za běhu do base třídy zděděnou třídu?

C# .NET .NET (C# a Visual Basic) lze přidat za běhu do base třídy zděděnou třídu? American English version English version

Avatar
Dog
Člen
Avatar
Dog:

Mám v programu:

class base //provadi roztrideni dat do parametru a mam tam parametr bool, ktery urcuje, jestli by se mely provest funkce ze zdedene tridy1 nebo 2

//zdedene tridy nemaji zadne dalsi parametry, pouze odlišné funkce se stejnymi jmeny, analyzuji dle pole o 1500 řadcich a 38 sloupcich
//dedeni jej zde dano kvuli tomu, ze obe tridy analyzuji obrovske mnozstv dat na zaklade odlisnych poli a je zbytecne volat tak pametove narocnou tridu
class zdedena1
class zdedena2

Tak se ptam, jestli to jde vyřešit nějak elegantněji, něž proměnnými se třídami, popř. sloucenim do jedne tridy

chtel bych aby se na zaklade boolu rozsirilo base tridu o zdedenou1 nebo zdedenou2.

 
Odpovědět 8. října 13:12
Avatar
Odpovídá na Dog
sadlomaslox25:
public interface IProcessor
{
    byte[] Process(byte[] data);
}

public class Procesor1 : IProcessor
{
    public byte[] Process(byte[] data)
    {
        throw new NotImplementedException();
    }
}

public class Procesor2 : IProcessor
{
    public byte[] Process(byte[] data)
    {
        throw new NotImplementedException();
    }
}

public enum Strategy
{
    S1,S2
}

public class Evaluator
{
    private byte[] data;
    public void Evaluate(Strategy strategy)
    {
        IProcessor processor = null;
        switch (strategy)
        {
            case Strategy.S1:
                processor = new Procesor1();
                break;
            case Strategy.S2:
                processor = new Procesor2();
                break;
        }
        data = processor.Process(data);
    }
}
 
Nahoru Odpovědět 8. října 14:09
Avatar
Dog
Člen
Avatar
Dog:

Nakonec jsem to musel vyřešit tak, že jsem obě třídy sloučil... Ale přesto bych byl rád, kdyby mi to někdo vysvětlil jak to funguje, protože se rád naučím něco nového...

 
Nahoru Odpovědět 9. října 20:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.