Is it possible to pass generic argument into overloaded method?

```
class Shop
{
  void CreateButton<T>(T itemToBuy)
  {
    var button = CreateButtonImpl();
    button.onClick.AddListener(() => Buy(itemToBuy));
  }

  void Buy(C c) {}
  void Buy(D d) {}
}

class C {}
class D {}

```

In the above code, there is an error that T cannot be converted to C. Is there any way to fix it?