Вы пытаетесь указать классу B, чтобы конструктор принимал экземпляр типа A без какой-либо спецификации типа.Вы можете либо обновить класс B, принимая параметр типа, как класс A:
public class B<T>
{
...
}
, либо вы можете сделать конструктор класса b более конкретным, указав для него параметр типа, например:
public B(A<string> myObjA)
{
a = myObjA;
}
Для получения дополнительной информации об этом параметре типа, я предлагаю вам посмотреть некоторую информацию о дженериках.Там множество книг и статей!
edit
Я вижу, вы обновили код.Этого все равно будет недостаточно, если TypeC не является реальным типом, который вы нам не дали.Это, однако, было бы очень трудно понять сценарий именования.В основном в классе A вы определяете параметр общего типа, который может быть указан под именем TypeC, а в классе B вы предполагаете, что тип с этим именем существует.Я все еще рекомендую вам почитать дженерики.