Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: generic extension

C# .NET .NET (C# a Visual Basic) generic extension American English version English version

Aktivity (1)
Avatar
Posix
Člen
Avatar
Posix:12.3.2014 23:09

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ý:12.3.2014 23:22

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

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

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:13.3.2014 0:28

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.