Frage

Ich versuche, einen Usercontrol zu schaffen, die von einem generischen Klasse übernimmt. Es ist nicht direkt von einer generischen Klasse erbt, sondern durch eine Zwischenklasse, die nicht Generika nicht verwendet. Dies kompiliert und arbeitet zur Laufzeit, aber ich erhalte eine Fehlermeldung zur Entwurfszeit.

Hier ist meine allgemeine Elternklasse:

Public Class GenericParent(Of T)
    Inherits UserControl
End Class

Hier ist meine nicht-generische Elternklasse:

Public Class NonGenericParent
    Inherits GenericParent(Of String)
End Class

Hier ist meine XAML:

<local:NonGenericParent x:Class="SilverlightApplication5.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:SilverlightApplication5"
    Width="400" Height="300">
    <StackPanel>
        <Button Content="Hello"/>
    </StackPanel>
</local:NonGenericParent>

Der IntelliSense-Parser gibt die folgenden Fehler:

  1. Die Eigenschaft 'Breite' wurde nicht in Typ 'NonGenericParent' gefunden.
  2. Die Eigenschaft 'Höhe' wurde nicht in Typ 'NonGenericParent'.
  3. gefunden
  4. Der Typ 'NonGenericParent' unterstützt nicht die direkten Inhalt.

Es ist, als ob IntelliSense kann nicht den Vererbungsbaum vorbei an der GenericParent-Klasse auf. Ich habe versucht, den Content direkt auf der SilverlightApplication5.Page Klasse angeben, die NonGenericParent Klasse, und es funktioniert nicht.

Ich habe gelesen, dass das Typeargument Attribut nicht in Silverlight 2.0 unterstützt. Deshalb habe ich die Zwischen NonGenericParent Klasse erstellt haben.

Wenn jemand irgendwelche Ideen, wie diese Fehler zum Schweigen ich gespannt sein würde, sie zu hören.

Update:. Wir haben ein Support-Ticket mit MSFT geöffnet, ich werde dieses Update mit dem, was ihre Lösung

War es hilfreich?

Lösung

Wir haben Wort von Microsoft erhalten, dass dies nicht wahrscheinlich ist, in zukünftigen Versionen zu befestigen. Nachdem sie das Problem herum und versuchen, prallte die verantwortliche Gruppe zu finden, scheint es, dass dieses Problem auf ihre WPF Entwickler-Gruppe gehört, das ist, wo die ‚würde es nicht reparieren‘ Antwort kam aus.

In der Zwischenzeit haben wir unseren Code aktualisiert, um den Generika ausreißen von den übergeordneten Klassen, bis ich denke, XAML 2009.

Andere Tipps

Nicht sicher Silverlight, aber das kompiliert und ausgeführt wie in c # zu erwarten:


class GenericObject[T] : UserControl
{
}

class StaticObject : GenericObject[Int32]
{
    public Int32 wide { get { return this.Width; } }
}

private void Form1_Load(object sender, EventArgs e)
{
    StaticObject so = new StaticObject();
    this.Text = so.wide.ToString();
}

Also, wenn es gegen den clr kompiliert, sollte es gut funktionieren.

Könnte nur ein Intellisense Fehler sein, wie Sie vorschlagen. Normalerweise würde ich abraten comiler Warnungen zu ignorieren, aber in diesem Fall scheint es, dass die Warnung nicht gültig ist.

bearbeiten. Substituierte spitze Klammern mit eckigen Klammern verursachen sie SO gestrippt

Trotz bei 2,0 Silverlight ist (und vor allem die VS2008 Tweaks für Silverlight) sind noch sehr jung. Es gibt Macken noch in dem IDE Zeug.

Haben Sie immer noch das Problem auch nach einem erfolgreichen Build?

Dieser Blog-Eintrag scheint Ihr Problem bezogen werden:

http://blogs.msdn.com/b/wpfsldesigner/archive/2010/01/22/known-issue-controls-deriving-from-a- generic-Basis-Klasse-muss-sein-in-getrennt-assembly.aspx

Für Silverlight scheint es, dass Sie drei Klassen müssen für diese arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top