Какую легкую базу данных я должен использовать в расширении Firefox?

Приведение Child1Service к IBaseService<Child1VM> невозможно, если T в IBaseService<T> не определено как ковариант, который выполняется следующим образом: IBaseService<out T>

Теперь он выдаст вам эту ошибку:

CS1961 Недопустимая дисперсия: параметр типа 'TVM' должен быть противоположно допустимым для 'IBaseService.Method2 (TVM)'. «TVM» является ковариантным.

Поэтому вам придется изменить параметр Method2 с Child1VM на IBaseVM.

Это будет работать:

public interface IBaseService<out TVM> where TVM : IBaseVM
{
    TVM Method1();
    void Method2(IBaseVM param);
}

public interface IBaseVM
{
    int Id { get; set; }
    string Name { get; set; }
}

public class Child1VM : IBaseVM
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Child1Service : IBaseService<Child1VM>
{
    public Child1VM Method1() { return new Child1VM(); }
    public void Method2(IBaseVM param)
    {
        return; //body... }
    }
}

public class Driver
{
    public static void Main(string[] ars)
    {
        IBaseService<Child1VM> child1Service = new Child1Service();
        IBaseService<IBaseVM>[] services = new IBaseService<IBaseVM>[]
            {
                child1Service,
            };
    }
}
5
задан Shog9 8 February 2009 в 22:37
поделиться

2 ответа

SQLite встроен к последним версиям Firefox для использования в качестве механизма хранения данных. Больше информации и примеров того, как использовать обертку FF API, могут быть найдены на MDC.

8
ответ дан 14 December 2019 в 01:19
поделиться

sqlite, используемый быть и следующие самостоятельно

1
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: