Невозможно создать экземпляр абстрактного класса или интерфейса, но это не абстрактный класс и не интерфейс?
У меня есть два класса, ни один из них не является абстрактным, и ни один из них не является интерфейсом.
IFileInfoClass:
public class IFileInfo
{
#region Class Variables
/// <summary>The file name.</summary>
private string fileName = String.Empty;
/// <summary>The file path.</summary>
private string filePath = String.Empty;
/// <summary>The date time stamp modified.</summary>
private DateTime dateTimeStampModified = DateTime.Now;
#endregion Class Variables
#region Constructors
/// <summary>Initializes a new instance of the <see cref="IFileInfo"/> class.</summary>
public IFileInfo() { }
...
//Some Public Properties and another constructor...ect...
...
}
Тогда в вызывающем классе у меня есть вот что:
public IObservable<IFileInfo> GetFilesList()
{
IObservable<IFileInfo> files = new IObservable<IFileInfo>(); //ERROR HERE
}
Но когда я иду на компиляцию, я получаю ошибку en: Невозможно создать экземпляр абстрактного класса или интерфейса
'System.IObservable<MyNameSpace.Models.IFileInfo>'
Но это не абстрактный класс, и это не абстрактный класс. Interface...so что это дает? Делает ли создание IObservable коллекции класса каким-то образом сделать его абстрактным?
К вашему сведению: IObservable исходит от MVVM-Light Galasoft.
Я имею в виду, что я знаю, что не могу создать экземпляр абстрактного класса или интерфейса, потому что абстрактные классы и интерфейсы ничего не делают и не должны делать, но это не то, что я пытаюсь сделать здесь! Чего мне не хватает?Немного истории, я попытался создать его как реализацию класса FileInfo, благодаря некоторым другим предложениям с других сайтов, затем я узнал, что, конечно, Microsoft превратила это в запечатанный класс, что имеет смысл, как бы неприятно это ни было.
Именно поэтому я решил просто удалить наследование из FileInfo и запечь данные прямо в мой собственный класс, что прекрасно, если бы он все еще не думал, что он каким-то образом наследует от класса, от которого я на самом деле больше не наследую. На самом деле, я думаю, что теперь я преодолел это препятствие. На самом деле это не значит, что я пытаюсь наследовать от запечатанного класса больше. Но если серьезно, я просто кручу свои колеса. вот, есть идеи?Заранее спасибо!
1 ответ:
Компилятор прав, потому что
IObservable<T>
- это интерфейс, а не класс,поэтому его нельзя создать.Для получения дополнительной информации об этом интерфейсе вы можете прочитать this