Я не понимаю, почему вы используете дженерики и рефлексию.
То, что вы пытаетесь сделать, может быть легко достигнуто с помощью наследования и полиморфизма, без привлечения рефлексии, которую не следует использовать небрежно, так как это может повлиять на производительность.
Вы можете следовать тому, что я сказал в комментарии, но это было бы слишком много для реализации, аналогичной той, которую вы опубликовали (несколько классов с одинаковыми методами).
Вы можете использовать интерфейс (например, ICoastStore
), который реализован типами EastCoastStore
и WestCoastStore
. Тогда вам не нужно использовать отражение, и реализация MyGenerics
будет намного проще.
public class EastCoastStores : ICoastStore
{
private string zip;
public void SetZipCode(string zip)
{ this.zip = zip; }
public string GetZipCode()
{ return zip; }
}
public class WestCoastStores : ICoastStore
{
private string zip;
public void SetZipCode(string zip)
{ this.zip = zip; }
public string GetZipCode()
{ return zip; }
}
public interface ICoastStore
{
void SetZipCode(string zip);
string GetZipCode();
}
public class MyGenerics
{
private ICoastStore selectedValues;
public MyGenerics(ICoastStore selectedValues)
{
this.selectedValues = selectedValues;
}
public string GetZipCode()
{
return selectedValues.GetZipCode();
}
}
static void Main(string[] args)
{
EastCoastStores eastCoastStores = new EastCoastStores();
eastCoastStores.SetZipCode("12345");
MyGenerics orderAction = new MyGenerics(eastCoastStores);
var val = orderAction.GetZipCode();
}