У меня есть словарь типов классов, выглядит следующим образом:C# Pass Словарь типов класса в Generic
private static Dictionary<int, Type> GetArrayOfClassInstances()
{
var availability = new LeisureLinkBaseProduct.Availability();
var baseRate = new LeisureLinkBaseProduct.BaseRate();
var stayRestrictions = new LeisureLinkBaseProduct.StayRestrictions();
var checkInInformation = new LeisureLinkBaseProduct.CheckInInformation();
var specials = new LeisureLinkBaseProduct.Specials();
var taxes = new LeisureLinkBaseProduct.Taxes();
var fees = new LeisureLinkBaseProduct.Fees();
var classDictionary = new Dictionary<int, Type>();
classDictionary.Add(1, availability.GetType());
classDictionary.Add(2, baseRate.GetType());
classDictionary.Add(3, stayRestrictions.GetType());
classDictionary.Add(4, checkInInformation.GetType());
classDictionary.Add(5, specials.GetType());
classDictionary.Add(6, taxes.GetType());
classDictionary.Add(7, fees.GetType());
return classDictionary;
}
И я хочу, чтобы передать его в этот общий метод, который выглядит следующим образом:
var classes = GetArrayOfClassInstances();
foreach (var instance in classes)
{
var request = RequestBuilder.BuildAdditionalDataRequest(link.href);
var response = Api<instance.value>(request.Endpoint);
}
но я получаю ошибку intellisense «экземпляр - это переменная, но используется как тип», как передать этот тип класса в общий? Это возможно? Благодаря!
В общей сложности в сторону на ваш вопрос, вам не нужно, чтобы создать экземпляр, чтобы получить его тип, вы можете сделать (например) 'вар налоги = TypeOf (LeisureLinkBaseProduct.Taxes);' – Jamiec
о приятно, что это намного лучше то, что я делал –
[этот вопрос] (http://stackoverflow.com/questions/266115/pass-an-instantiated-system-type-as-a-type-parameter-for-a-generic-class?rq = 1) говорит о создании экземпляра универсального класса с экземпляром 'Type', но процесс будет аналогичным, если' Api' в вашем коде является вызовом метода. – Jamiec