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

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleTest {
    public abstract class StoreItem {
        public int Oid { get; set; }
    }
    public class FirstStoreItem : StoreItem {
        public string First { get; set; }
    }
    public class SecondStoreItem : StoreItem {
        public string Second { get; set; }
    }
    public class DataStore {
        public static int GetUniqOid(IEnumerable<StoreItem> storeItemList) {
            int result = 0;
            return result;
        }
        public List<FirstStoreItem> FirstStoreItemList { get; set; }
        public List<SecondStoreItem> SecondStoreItemList { get; set; }
    }
    class Program {
        static void Main(string[] args) {
            DataStore dataStore = new DataStore();
            dataStore.FirstStoreItemList = new List<FirstStoreItem>();
            dataStore.SecondStoreItemList = new List<SecondStoreItem>();
            
            int oid1 = DataStore.GetUniqOid(dataStore.FirstStoreItemList);
            int oid2 = DataStore.GetUniqOid(dataStore.SecondStoreItemList);
        }
    }
}

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


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

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

5   голосов , оценка 4.8 из 5
Похожие ответы