У меня гораздо более сложная проблема, но я свел ее к следующему простому примеру:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sandbox
{
class Program
{
static void Main(string[] args)
{
IFactory<IProduct> factory = new Factory();
}
}
class Factory : IFactory<Product>
{
}
class Product : IProduct
{
}
interface IFactory<T> where T : IProduct
{
}
interface IProduct
{
}
}
Все хорошо и здорово ... кроме того, что я получаю эту ошибку.
Ошибка 1 Не удается неявно преобразовать тип Sandbox.Factory
в Sandbox.IFactory<Sandbox.IProduct>
. Существует явное преобразование (вам не хватает приведения?) C: \ ~~ \ Program.cs 12 42 Песочница
Кто-нибудь желает объяснить, почему это так? Я уверен, что Джон Скит или Эрик Липперт могли бы в одно мгновение объяснить, почему это так, но должен быть кто-то, кто не только понимает, ПОЧЕМУ это нельзя сделать вывод, но и может объяснить, как лучше всего решить эту ситуацию.
Ответьте на вопрос здесь