<p>I get this error:</p>

<p>System.Reflection.TargetException: Object does not match target type.</p>

<p>when trying to bind a <code>List&lt;IEvent&gt;</code> where an IEvent can be an appointment, a birthday, or a few other calendar related event types.</p>

ChanChan,
GridView does
not
support binding to a collection of interfaces,
Try redisigning your application to ensure binding only to a collection of concreate classes.
The only workaround for this is to use base class (in your case Event) and bind to a collection of events.
```
```
public  class Event
        {
            public  DateTime StartDate { get; set; }
        }
        public class Birthday : Event
        {       

            public DateTime? EndDate { get; set; }
        } 
        public class Appointment : Event
        {       

            public string Place { get; set; }
        }
        public class EventCollection : Collection<Event>
        {
            public static EventCollection GetEvents()
            {
                var events = new EventCollection();
                events.Add(new Birthday
                {
                     EndDate = DateTime.Now.AddDays(1),
                     StartDate = DateTime.Now
                });
                events.Add(new Appointment
                {
                    Place = "Gallery",
                    StartDate = DateTime.Now
                });
                return events;
             }
         }
```
```
Please note that inheritance from base classes creates 'is a' relation, but inheriting
from interfaces creates 'can do' relation. In other words, IMO, implementing IEvent
would be a bad design, since Birthday 'is a' Event. I would inherit from base class here.
Hope this helps,
Valve.