Eigentlich dachte ich, ich hätte COM im Griff, aber irgendwie steh ich grad wie der Ochs vorm Berg.
Ich möchte in .NET eine Bibliothek erstellen, die auch über COM z.B. in Visual Basic 6 nutzbar ist. Eine der darin enthaltenen Klassen soll eine Auflistung darstellen, die zum einen die Eigenschaften
Ein For-Each in .NET ist dabei kein Problem, in VB sähe die Verwendung (eigentlich) so aus:
Leider gibt es dann in der For-Each-Zeile den Laufzeitfehler 438 "Objekt unterstützt diese Eigenschaft oder Methode nicht".
Wie man am auskommentierten Teil im Interface erkennen kann, habe ich es auch schon damit probiert, die Interface-Methode _newEnum() zu implementieren, das änderte aber nichts.
Ich steh grad tierisch auf dem Schlauch, weil ich das Gefühl habe, dass die Lösung sau-einfach ist, ich nur einfach grad nicht drauf komme und wohl auch die falschen Suchbegriffe verwende um die Lösung im Netz zu finden.
Langer Rede kurze Frage: Was fehlt, um auch in VB6 ein For-Each mit dieser Klasse zu ermöglichen?
Ich möchte in .NET eine Bibliothek erstellen, die auch über COM z.B. in Visual Basic 6 nutzbar ist. Eine der darin enthaltenen Klassen soll eine Auflistung darstellen, die zum einen die Eigenschaften
Count
und Item(index)
haben und in VB6 (auch) mit For Each durchlaufen werden können soll:C#-Quellcode
- public interface IPartCollection : IEnumerable, IEnumerator
- {
- //[DispId(-4)]
- //IEnumerator _newEnum();
- [DispId(1)]
- int Count { get; }
- [DispId(2)]
- Part this[int index] { get; }
- }
- [ClassInterface(ClassInterfaceType.None)]
- public class PartCollection : IPartCollection
- {
- private List<Part> _partList = new List<Part>();
- public PartCollection()
- {
- // ...
- }
- public int Count
- {
- get { return _partList.Count; }
- }
- public Part this[int index]
- {
- get { return _partList[index]; }
- }
- public IEnumerator GetEnumerator()
- {
- return _partList.GetEnumerator();
- }
- private IEnumerator _enum;
- public object Current
- {
- get { return _enum.Current; }
- }
- public bool MoveNext()
- {
- return _enum.MoveNext();
- }
- public void Reset()
- {
- _enum = GetEnumerator();
- }
- }
Ein For-Each in .NET ist dabei kein Problem, in VB sähe die Verwendung (eigentlich) so aus:
Leider gibt es dann in der For-Each-Zeile den Laufzeitfehler 438 "Objekt unterstützt diese Eigenschaft oder Methode nicht".
Wie man am auskommentierten Teil im Interface erkennen kann, habe ich es auch schon damit probiert, die Interface-Methode _newEnum() zu implementieren, das änderte aber nichts.
Ich steh grad tierisch auf dem Schlauch, weil ich das Gefühl habe, dass die Lösung sau-einfach ist, ich nur einfach grad nicht drauf komme und wohl auch die falschen Suchbegriffe verwende um die Lösung im Netz zu finden.
Langer Rede kurze Frage: Was fehlt, um auch in VB6 ein For-Each mit dieser Klasse zu ermöglichen?
Weltherrschaft erlangen: 1%
Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
Danke.
Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
Danke.