Avatar
Posix
Člen
Avatar
Posix:

Ahoj. Mám třídu Response<T>. Chci vytvořit extension jen pro určité typy Response.

public static int VratCislo<T>(this Response<T> response) where T : BaseClass
        {
            return response.Cislo;
        }
class BaseClass
{
    public int Cislo { get; set; }
}
class ClassOne : BaseClass
{
    public int One { get; set; }
}
class ClassTwo : BaseClass
{
    public int Two{ get; set; }
}

Jenze to nefunguje jak chci:

Response<ClassOne> r = new Response<ClassOne>();
r.VratCislo(); // FAIL

Vezne to jen pro BaseClass

Response<BaseClass> r = new Response<BaseClass>();
r.VratCislo(); // OK

Chápete, co jsem se vám snažil vysvětlit a jak to vyřešit? :D

Editováno 12.3.2014 23:10
Odpovědět 12.3.2014 23:09
Proč to dělat jednoduše, když to jde složitě.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Posix
Jan Vargovský:

Můžeš hodit plné třídy jak je máš definované ?

 
Nahoru Odpovědět 12.3.2014 23:22
Avatar
Posix
Člen
Avatar
Posix:

BaseClass, ClassOne a ClassTwo jsou stejné až na jména. Response<T> by měl být tady https://github.com/…tResponse.cs

Nahoru Odpovědět 13.3.2014 0:16
Proč to dělat jednoduše, když to jde složitě.
Avatar
Posix
Člen
Avatar
Posix:

neeee uz zase.. hodinu hledam problem a pak si vsimnu, ze sem zapomnel dat u jedne tridy class ClassXXX : BaseClass... Kdyz mam takovych tridy skoro 10, tak sem to prehledl :( ok VYRESENO!

Nahoru Odpovědět 13.3.2014 0:28
Proč to dělat jednoduše, když to jde složitě.
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 4 zpráv z 4.