Unlike other answers, this is not supported in .NET 4.0. Only interfaces and delegates support common variance. However, .NET 4.0 will allow you to do this:
void AMethod(IEnumerable<A> parameter) {}
...
List<B> list = new List<B>();
AMethod(list);
.NET 3.5 Cast:
void AMethod(IEnumerable<A> parameter) {}
...
List<B> list = new List<B>();
AMethod(list.Cast<A>());
AMethod generic:
void AMethod<T>(List<T> parameter) where T : A
...
List<B> list = new List<B>();
AMethod(list); // Implicitly AMethod<B>(list);
, - , AMethod. A, - . , .