Compile time error: cannot convert from specific type to a generic type
Posted
by Water Cooler v2
on Stack Overflow
See other posts from Stack Overflow
or by Water Cooler v2
Published on 2010-05-31T09:33:36Z
Indexed on
2010/05/31
9:42 UTC
Read the original article
Hit count: 209
I get a compile time error with the following relevant code snippet at the line that calls NotifyObservers in the if construct.
public class ExternalSystem<TEmployee, TEventArgs> : ISubject<TEventArgs>
where TEmployee : Employee
where TEventArgs : EmployeeEventArgs
{
protected List<IObserver<TEventArgs>> _observers = null;
protected List<TEmployee> _employees = null;
public virtual void AddNewEmployee(TEmployee employee)
{
if (_employees.Contains(employee) == false)
{
_employees.Add(employee);
string message = FormatMessage("New {0} hired.", employee);
if (employee is Executive)
NotifyObservers(new ExecutiveEventArgs { e = employee, msg = message });
else if (employee is BuildingSecurity)
NotifyObservers(new BuildingSecurityEventArgs { e = employee, msg = message });
}
}
public void NotifyObservers(TEventArgs args)
{
foreach (IObserver<TEventArgs> observer in _observers)
observer.EmployeeEventHandler(this, args);
}
}
The error I receive is:
The best overloaded method match for 'ExternalSystem.NotifyObservers(TEventArgs)' has some invalid arguments. Cannot convert from 'ExecutiveEventArgs' to 'TEventArgs'.
I am compiling this in C# 3.0 using Visual Studio 2008 Express Edition.
© Stack Overflow or respective owner