Groups | Blog | Home
all groups > dotnet framework > april 2007 >

dotnet framework : Interface & Event


hufaunder NO[at]SPAM yahoo.com
4/29/2007 1:25:23 PM
I have an interface ITest that includes an event TestStatusChange.
There is also a class Test that implements ITest. In one of the
functions of Test I want to call the event (see code at the end) but
get the following error:

"The event 'eventTest.Test.TestStatusChanged' can only appear on the
left hand side of += or -=.

All samples I saw seem to do the same I am doing. What am I missing?

Thanks

using System;
using System.Collections.Generic;
using System.Text;

namespace eventTest
{
public delegate void TestStatus(String status);

interface ITest
{
event TestStatus TestStatusChanged;
}

class Test : ITest
{
public event TestStatus TestStatusChanged
{
add { TestStatusChanged += value; }
remove { TestStatusChanged -= value; }
}

public void Check()
{
TestStatusChanged("ok"); //!!!!!!!!! COMPILE
ERROR !!!!!!!!!!!!!
}
}

class Program
{
static void Main(string[] args)
{
}
}
}
Mattias Sjögren
4/29/2007 11:37:26 PM
[quoted text, click to view]

Unless you have a reason to use the more verbose syntax, change this
to just

public event TestStatus TestStatusChanged;


Mattias

--
Mattias Sjögren [C# MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Jon Skeet [C# MVP]
4/30/2007 12:00:53 AM
[quoted text, click to view]

When you specify the event add/remove operations, you don't get the
autogenerated field.

See http://pobox.com/~skeet/csharp/events.html for more details.

--
Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
AddThis Social Bookmark Button