Přetipování u Activator.CreateInstance   zodpovězená otázka

WPF

Dobrý den,

Mám třídu (MojeTrida) odvozenou od ToggleButton a implementuji jí nějaké rozhraní (IRozhrani).

Pokud vytvořím instanci přes Activator.CreateInstance(GetType(mojeTrida)) tak nemohu tuto instanci přetypovat na IRozhrani.

Pokud ji vytvořím klasicky new MojeTrida() tak to jde.

Věděl by někdo, proč to u activatoru nejde ?

V čem je to jiné ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pošlete sem kód, kterým přetypováváte. Tohle by jít mělo, pokud v projektu nemáte jinou kompilační chybu. Co přesně to hlásí?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Třída s rozhraním:

Public Class LightControll
        Inherits Primitives.ToggleButton
        Implements Interfaces.ILight

        Public ReadOnly Property ActorType As Type Implements Interfaces.ILight.ActorType
            Get
                Return GetType(HALogic.Actors.Light.ClassicLight)
            End Get
        End Property

    End Class

Typ controlu čtu z xml

V příkladu napíšu pouze gettype(LightControll)

   'Kontrola breakpointem
   'Typ t i objekt o v proměnných jsou
   Dim t as Type = GetType(LightControll)
   Dim o as Object = Activator.CreateInstance(t)

   'Zde chyba invalidcaseexception
   'Object LightControll nelze přetypovat na ILight
   Dim ia as Interfaces.ILight = DirectCast(o, Interfaces.ILight)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak teď se budu muset omluvit za tento příspěvek,

Problém bude někde v referencích, protože pokud kód, který mi nejde dám do nového projektu s jednou assembly tak to jde, chyba tedy bude někde jinde.

Děkuji

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback