CannibalSmith ([info]cannibalsmith) rakstīja [info]koderi kopienā,
@ 2009-03-12 16:56:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
.net un eventi
C# viss kompilējas. Vai patterns pareizi uzrakstīts?
using System.ComponentModel;

public class Zomg : INotifyPropertyChanged
{
	public event EventHandler Gloop;
	public event PropertyChangedEventHandler PropertyChanged;
	
	protected void OnGloop(EventArgs e)
	{
		if (Gloop != null) Gloop(this, e);
	}
	
	protected void OnPropertyChanged(PropertyChangedEventArgs e)
	{
		if (PropertyChanged != null) PropertyChanged(this, e);
	}
}

C++/CLI nez kamdēļ kliedz, ka kaut kādas add un remove funkcijas nav implementētas PropertyChangedEventHandler eventam. Vai patterns pareizi uzrakstīts?
using namespace System::ComponentModel;

publc ref class Zomg : public INotifyPropertyChanged
{
public:
	event EventHandler^ Gloop;
	virtual event PropertyChangedEventHandler^ PropertyChanged; // virtual keywordu vajadzēja!
	
protected:
	virtual void OnGloop(EventArgs^ e)
	{
		Gloop(this, e);
	}
	
	virtual void OnPropertyChanged(PropertyChangedEventArgs^ e)
	{
		PropertyChanged(this, e);
	}
};


(Lasīt komentārus) - (Ierakstīt jaunu komentāru)


[info]bubu
2009-03-12 18:25 (saite)
Esi pārliecināts, ka kļūdu saka par PropertyChangedEventHandler?

Tam INotifyPropertyChanged interfeisam jau vajag PropertyChanged eventu implementēt. Tavā kodā arī C# kodam nevajadzētu kompilēties.

(Atbildēt uz šo) (Diskusija)


[info]cannibalsmith
2009-03-12 18:31 (saite)
Kļūda, rakstot piemēru. Poop vietā ieliec PropertyChanged.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]bubu
2009-03-12 18:44 (saite)
Joprojām tev tur gļuki - atgriežamos tipus vajag par void uzlikt :)
Un katrā ziņā man warningu (pirms kļūdas) saka visai skaidru, kur ir problēma:
Zomg::PropertyChanged::add requires 'virtual' keyword to implement the interface method...

Tā ka pieliec vien virtual un viss būs.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]cannibalsmith
2009-03-12 19:01 (saite)
Ghh, es nemāku norakstīt. Ir man tur virtual.

(Atbildēt uz šo) (Iepriekšējais)


[info]cannibalsmith
2009-03-12 19:02 (saite)
virtual event, lol! paldies!

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]bubu
2009-03-12 19:11 (saite)
Un kurš uz nullptr pārbaudīs eventu mainīgos C++/CLI kodā?

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]cannibalsmith
2009-03-12 19:28 (saite)
Kad es rakstu if (PropertyChanged != nullptr), viņš kliedz, ka usage requires 'Application1::Zomg::PropertyChanged' to be a data member.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]bubu
2009-03-12 19:33 (saite)
Ah pareiz, piemirsu. Uz nepiešķirtu eventu vajadzēja pārbaudīt MC++'ā (.NET 1.1). C++/CLI vairs nevajag - viss notiksies automātiski.

(Atbildēt uz šo) (Iepriekšējais)


(Lasīt komentārus) -

Neesi iežurnalējies. Iežurnalēties?