Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF – vaše škola fotografie

 

Kdo lektoruje pražský letní workshop v ZOO a Botanické zahradě?

V dnešní soutěži hrajeme o:

Dárkový certifikát v hodnotě 1000 Kč



Vytvoreni objektu nezname tridy

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

 

Vložit nový příspěvek

Jméno:

Předmět:

Příspěvek:

*AGGRESSIVE* O:-) :-/ :-P *BLUSH* *BYE* :'( *DASH* 8-) *DRINK* :-| *THUMBUP* *SOS* *KISSED* :-* *OK* *SECRET* *STOP*

Pohlaví:

Muž, Žena

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

Re: Vytvoreni objektu nezname tridy

Autor: TC ♂

11:51:06 13.06.2012

Kamil napsal/a

Morfeus : tam se vytvori max 3 instance, takze to nevadi

TC: tomu kodu moc nerozumim. Enum i ten slovnik chapu, ale co patri misto te struktury? Kdyz mam 3 struktury, vsechny jejich prvky jsou staticke, ale jinak nemaji nic spolecneho , takze vlastne nevim jakeho typu bude value ve slovniku



A co takhle object?

TC

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Kamil ♂

16:09:27 12.06.2012

Tak to mi pred tim nedoslo... No uz necham to pres ten case

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Morfeus ♂

14:06:00 12.06.2012

No ono to skôr malo vyzerať takto:

enum Kind { A, B, C, D }

Dictionary<Kind, Type> druhy = new Dictionary<Kind, Type>
{
{ A, typeof(triedaA) },
{ B, typeof(triedaB) },
...
}

Ale v takom prípade (len 3 triedy a na rozlíšenie použiješ enum), tak odporúčam obyčajný case. Lebo skutočnú dynamickosť získaš len keď použiješ samotný názov triedy ako kľúč Dictionary.

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Kamil ♂

18:22:14 11.06.2012

Tak jsem to nakonec vyresil takhle:

Assembly assembly = Assembly.GetEntryAssembly();
string namespaceName = "JmenoNamesapce.";
string structureName = namespaceName;

switch (value)
{
case 0:
structureName += "strukturaA";
break;


case 1:
structureName = "strukturaB";
break;

case 2:
structureName = "strukturaC";
break;

}

type = assembly.GetType(structureName);

var field = (string[])type.InvokeMember("pole", BindingFlags.GetField, null, type, null);

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Kamil ♂

14:55:01 11.06.2012

Morfeus : tam se vytvori max 3 instance, takze to nevadi

TC: tomu kodu moc nerozumim. Enum i ten slovnik chapu, ale co patri misto te struktury? Kdyz mam 3 struktury, vsechny jejich prvky jsou staticke, ale jinak nemaji nic spolecneho , takze vlastne nevim jakeho typu bude value ve slovniku

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: TC ♂

13:01:11 11.06.2012

Kamil napsal/a

Diky, vyresil jsem to pomoci Activator.CreateInstance.

Ale zajimalo by me jeste , jak by se to resilo, pokud by se nejednalo o instance, ale o 3 staticke tridy/struktury.

Treba takhle:

Ve formulari by uzivatel vybral hodnotu. Pak bych mel tridu, ktera by na zaklade teto hodnoty pristupovala ke statickym prvkum struktury. Teto tride bych tu hodnotu poslal pres konstuktor a ta trida by musel na zaklade teto hodnoty vyhodnotit, ze ktere ze 3 statickych struktur bude cerpat data.



enum Kind {Hovno, Prdel, Sracka};

Dictionary<Kind, struktura>choice=new Dictionary<Kind, struktura>{
{ Kind.Hovno, struktura na hovno},
{Kind.Prdel, zertovna stuktura},


Zdravim

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Morfeus ♂

12:59:24 11.06.2012

Kamil napsal/a

Diky, vyresil jsem to pomoci Activator.CreateInstance.


OK, ale ak by počet tried vytvorených takto dynamicky nejako závratne stúpol tak sa fakt oplatí využiť tie expression trees, lebo ten Activator je dosť pomalý.

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Kamil ♂

12:38:10 11.06.2012

Diky, vyresil jsem to pomoci Activator.CreateInstance.

Ale zajimalo by me jeste , jak by se to resilo, pokud by se nejednalo o instance, ale o 3 staticke tridy/struktury.

Treba takhle:

Ve formulari by uzivatel vybral hodnotu. Pak bych mel tridu, ktera by na zaklade teto hodnoty pristupovala ke statickym prvkum struktury. Teto tride bych tu hodnotu poslal pres konstuktor a ta trida by musel na zaklade teto hodnoty vyhodnotit, ze ktere ze 3 statickych struktur bude cerpat data.

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: TC ♂

10:05:52 11.06.2012

TC napsal/a

Assembly, CreateInstance, ..

Muzes podle jmena, typu, jak se Ti zachce. V historii najdi muj priklad, kde je seznam controlu v menu a podle zvoleneho se vytvori novu control.

Zdravim

TC



UnifiedItem CreateItem(bool silent)
{
try
{
return Activator.CreateInstance(z_assemblyName, z_className).Unwrap() as UnifiedItem;
}
catch (Exception e)
{
if (!silent) throw new Exception("Constructor failed", e);
return null;
}
}
Zdravim

TC

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Ja On ♂

7:32:45 11.06.2012

Kamil napsal/a

Mam tri tridy, ktere dedi nejaky zaklad ze zakladni tridy, ale pak maji vlastni vlastnosti.

Jde to nejak vyresit?





Ano.

interface IBase

{
SomethingToDo();


}
nebo
class Base
{
public abstract void SomethingToDo();
}

class Ma:/*I*/Base
{
public /*override*/ void SomethingToDo()
{
//
}
}

class Mb:/*I*/Base
{
public /*override*/ void SomethingToDo()
{
//
}
}

class Mc:/*I*/Base
{
public /*override*/ void SomethingToDo()
{
//
}
}

/*I*/Base base;
switch (...)
{
case ...:
base=new Ma();
break;
case ...:
base=new Mb();
break;
case ...:
base=new Mc();
break;
}

if (base!=null)
base.SomethingToDo();

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Morfeus ♂

0:36:09 11.06.2012

Síce toto riešenie je celkom advanced, aj tak sa celkom hodí - nahradzuje Activator.CreateInstance:

http://www.codeproject.com/Articles/383845/Factory-Method-Pattern-With-Expression-Trees-using

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: TC ♂

22:05:27 10.06.2012

Assembly, CreateInstance, ..

Muzes podle jmena, typu, jak se Ti zachce. V historii najdi muj priklad, kde je seznam controlu v menu a podle zvoleneho se vytvori novu control.

Zdravim

TC

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Kamil ♂

21:44:36 10.06.2012

Vlastne pres ten switch by to ani neslo. Objekt by mimo switch neexistoval...

Citovat příspěvek

 

Re: Vytvoreni objektu nezname tridy

Autor: Kamil ♂

21:30:12 10.06.2012

Napada me jen pres switch"

switch (value)
{
case 0: TridaA nazev = new TridaA();
case 1: TridaB nazev = new TridaB();
case 2: TridaC nazev = new TridaC();
}

Ale prijde mi to jako divne reseni...

Citovat příspěvek

 

Vytvoreni objektu nezname tridy

Autor: Kamil ♂

20:36:15 10.06.2012

Zdravim,

potreboval bych poradit s timto problemem:

Mam formular a v nem si uzivatel (treba pomoci radioButtonu) vybere jednu ze tri moznosti. Na zaklade toho, jakou moznost si vybral se vytvori instance nejake tridy. Jenze jake tridy zavisi na tom, jakou volbu si vybral, takze v dobe, kdy pisu kod, nevim, ze ktere tridy se bude vytvaret objekt.

Mam tri tridy, ktere dedi nejaky zaklad ze zakladni tridy, ale pak maji vlastni vlastnosti.

Jde to nejak vyresit? Diky

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: