Применение статического метода выдает ошибку компиляции - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть примерно такая система:
Листинг программы
  1. public abstract class StoreItem {
  2. public int Oid { get; set; }
  3. }
  4. public class FirstStoreItem : StoreItem{
  5. public string First { get; set; }
  6. }
  7. public class SecondStoreItem : StoreItem{
  8. public string Second { get; set; }
  9. }
  10. public class DataStore {
  11. public static int GetUniqOid(List<StoreItem> storeItemList) {
  12. int result;
  13. ..................
  14. return result;
  15. }
  16. public List<FirstStoreItem > FirstStoreItemList { get; set; }
  17. public List<SecondStoreItem > SecondStoreItemList { get; set; }
  18. }
Далее, пытаюсь применить это:
Листинг программы
  1. [STAThread]
  2. static void Main() {
  3. DataStore dataStore = new DataStore();
  4. dataStore.FirstStoreItemList = new List<FirstStoreItem >();
  5. dataStore.SecondStoreItemList = new List<SecondStoreItem >();
  6. //ну и, например, применяю статичный метод
  7. int oid1 = DataStore.GetUniqOid(dataStore.FirstStoreItemList);
  8. //или
  9. int oid2 = DataStore.GetUniqOid(dataStore.SecondStoreItemList );
  10. }
Выдает ошибку компиляции "Argument '1': cannot convert from .....List<"мой_проект".FirstStoreItem >' to 'System.Collections.Generic.List<"мой_проект".StoreItem>'" для первого применения метода GetUniqOid или соответствующее для второго. Подскажите, пожалуйста, как правильно исправить, чтобы работало. Если необходимо пояснение, то в этом методе генерится, уникальный для переданной колекции объектов реализующих класс StoreItem, Oid.

Решение задачи: «Применение статического метода выдает ошибку компиляции»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace ConsoleTest {
  6.     public abstract class StoreItem {
  7.         public int Oid { get; set; }
  8.     }
  9.     public class FirstStoreItem : StoreItem {
  10.         public string First { get; set; }
  11.     }
  12.     public class SecondStoreItem : StoreItem {
  13.         public string Second { get; set; }
  14.     }
  15.     public class DataStore {
  16.         public static int GetUniqOid(IEnumerable<StoreItem> storeItemList) {
  17.             int result = 0;
  18.             return result;
  19.         }
  20.         public List<FirstStoreItem> FirstStoreItemList { get; set; }
  21.         public List<SecondStoreItem> SecondStoreItemList { get; set; }
  22.     }
  23.     class Program {
  24.         static void Main(string[] args) {
  25.             DataStore dataStore = new DataStore();
  26.             dataStore.FirstStoreItemList = new List<FirstStoreItem>();
  27.             dataStore.SecondStoreItemList = new List<SecondStoreItem>();
  28.            
  29.             int oid1 = DataStore.GetUniqOid(dataStore.FirstStoreItemList);
  30.             int oid2 = DataStore.GetUniqOid(dataStore.SecondStoreItemList);
  31.         }
  32.     }
  33. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы