Frage

Ich habe eine öffentliche Eigenschaft in meiner Form von Typ ListE<T> wo:

public class ListE<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable

Ja, es ist ein Bissen, aber das ist, was der Designer erfordert es als editierbare Sammlung im Eigenschaftenfenster zu zeigen. Was tut es! Also, ich die kleinen auf [..], um die Sammlung zu bearbeiten, und klicken Sie auf Hinzufügen ein Element in die Sammlung hinzuzufügen.

  

Arithmetic Operation führte zu einem Überlauf.

Nun, dies ist eine sehr einfache Liste, wenig mehr als eine zunehmend größere Anzahl. Der einzige Teil, das in der ganzen Sache zu Arithmetik nahe kommt, ist in der Funktion erweitern, und auch das verwendet eine Linksverschiebung statt einer Multiplikation, so dass nicht überläuft. Das alles macht ich glaube, dass diese Ausnahme in dem Designer angehoben wird, vielleicht durch eine kleine Unaufmerksamkeit Implementierungsdetail von mir verursacht, aber ich kann nicht einen Weg zu testen oder zu debuggen, das Szenario finden. Hat jemand eine intelligente Ideen?

EDIT: Ja, ich kann die Eigenschaft erfolgreich nutzen, gut auch manuell, dh. in dem OnLoad Handler, und ich nehme an, das ist, was ich greifen, wenn ich diese Arbeit nicht bekommen können, aber das wäre nicht ideal. : (

War es hilfreich?

Lösung

Ich kann nicht verstehen, was um Sie zu motivieren, die List Rad auf diese Weise zu versuchen, neu zu erfinden, aber Ihre Frage zu beantworten: Ich würde eine Linie „System.Diagnostics.Debugger.Break ()“ an den Konstruktor hinzufügen Ihre Klasse.

Dann versuchen Sie es in dem Designer zu verwenden, und Sie werden ein Pop-up fragen Sie, wenn Sie einen Debugger anhängen möchten. Bringen Sie eine zweite Instanz von Visual Studio als Debugger, und Sie werden in der Lage, einige Haltepunkte in Ihrem Code zu setzen und starten Sie das Debuggen.

Andere Tipps

Ein Ort wäre zu beginnen, dass es mit Ihrem ListE`1 tut Mathe kann :: Eigenschaft Count. Wenn das etwas subtilen Fehler hat (das heißt es ist komplizierter als das Rück this.innerList.Count) es könnte der Designer einen Überlauf Arithmetik auf einem gewissen Betrieb verursachen. Normalerweise keine arithmetische Überläufe auftreten, wenn nicht ausdrücklich aufgefordert für die Verwendung der

checked
{
   // ...
}

Syntax.

Sie müssen nicht die Debugger.Break hinzufügen (); rufen, um Ihren Code, es zu debuggen. Sie können einfach eine andere Instanz von VS öffnen und zu dem einen anhängen, dass Sie es verwenden, sollten Sie es aus und Sie in der Lage zu debuggen ohne Probleme (nur sicherstellen, dass Sie die Symbole geladen).

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