VS2008, Factory, Delegate, Abstract Klasse Problem

29/04/2010 - 15:54 von Michaela Brauner | Report spam
Hallo,

ich habe ein kleines Problem.

Asynchrones zurückmelden des Scancodes.
Ich weiß nicht, wann der Bediener scannt,
z.B. Kasse Supermarkt.
Jeder Scanner hat evtl. eigene Features, deshalb konfigurierbar gestalten.

Warum kann ich den definierten Delegate 'EventHandlerScannerVerify'
nicht in meiner konkreten Scannerklasse aufrufen?

Hoffe ich habe es klar rübergebracht umd mir kann jemand helfen.

Übersichtsbild.
http://www1.minpic.de/bild_anzeigen.php?id0654&keyx643808&ende

Folgende Konstellation.

Factory hat n-Scanner zur Auswahl.
Idee:
Factory
ScannerProdukte
Interface Event, Delegate
Basisklasse
KonkrekteScannerKlasse

Interface:
public delegate void EventHandlerScannerVerify(Object sender,
NotifyEventArgsHardware e);
public interface IScannerVerify
{
event EventHandlerScannerVerify EvHaScannerVerify;
int ComPortOpen();
void ComPortClose();
string Read();
void TriggerStart(string sequence);
}
Basisklasse:
public abstract class BaseScannerVerify : IScannerVerify
{
protected string ReadCode { get; set; }
public event EventHandlerScannerVerify EvHaScannerVerify;

public virtual int ComPortOpen()
{
return 0;
}

public virtual void ComPortClose()
{
}

public virtual string Read()
{
return ReadCode;
}

public virtual void TriggerStart(string sequence)
{
}

// public virtual void EvHaScannerVerifyFunctionAsynchron(string
data)
public void EvHaScannerVerifyFunctionAsynchron(string data)
{
if ( this.EvHaScannerVerify != null )
{
this.EvHaScannerVerify(this, new
NotifyEventArgsHardware(data));
}
}
}
Konkrete Scannerklasse
public class ScannerVerifyTypeA : BaseScannerVerify
{
//private string ReadCode { get; set; }
//public event EventHandlerScannerVerify EvHaScannerVerify;

public override int ComPortOpen()
{
return 0;
}

public override void ComPortClose()
{
}

public override string Read()
{
ReadCode = "2010-04-29-TestCode--A";
EvHaScannerVerifyFunctionAsynchron(ReadCode);
return ReadCode;
}

public override void TriggerStart(string sequence)
{
}

// // public override void
EvHaScannerVerifyFunctionAsynchron(string data)
// public void EvHaScannerVerifyFunctionAsynchron(string data)
// {
// if ( this.EvHaScannerVerify != null )
// {
// this.EvHaScannerVerify(this, new
NotifyEventArgsHardware(data));
// }
// }
}
 

Lesen sie die antworten

#1 Michaela Brauner
29/04/2010 - 16:39 | Warnen spam
Hallo,

anbei noch was zur Lösung beitragen kann.

Danke für Eure Hilfe.

Error 1 The event 'Definitions.Core.BaseScannerVerify.EvHaScannerVerify'
can only appear on the left hand side of += or -=
C:\Hardware.Implementations.ScannerVerify.ScannerA\Core\ScannerVerifyTypeA.cs
38 22 Hardware.Implementations.ScannerVerify.ScannerA


http://www1.minpic.de/bild_anzeigen.php?id0661&key543658&ende


Hoffe das Bild ist zu sehen.

Grüße Michaela

Ähnliche fragen