【发布时间】:2018-11-13 12:22:42
【问题描述】:
我在使用我创建的界面时遇到了问题。我尝试实现它,但出现错误。任何答案表示赞赏。提前致谢。
这里是我想要实现的实际接口。
namespace CRDM.Core.Models
{
[Table("cities")]
public class City : ICity<CountryState>
{
}
[Table("country_states")]
public class CountryState : ICountryState<Country>
{
}
[Table("countries")]
public class Country : ICountry
{
}
}
namespace CRDM.Core.Abstractions.Entities
{
public interface ICity <TState> :
where TState : ICountryState<ICountry>
{
TState StateReference { get; set; }
}
public interface ICountryState<TCountry> :
where TCountry : ICountry
{
}
public interface ICountry
{
}
}
我成功实现了Country和CountryState类,但是City的实现出现了错误。这里是错误信息。
CRDM.Core.Models.CountryState类型不能用作类型 泛型类型或方法ICity<TState>中的参数TState。没有隐式的引用转换
CRDM.Core.Models.CountryState到CRDM.Core.Abstractions.Entities.ICountryState<CRDM.Core.Abstractions.Entities.ICountry>.
【问题讨论】:
-
恐怕您尝试使用泛型的方式有问题。看起来您正在考虑为不同的国家或州开设不同的课程。或者,也许您正试图使用通用参数作为将城市与州与国家联系起来的一种方式,等等。我可能完全错了。但如果是这种情况,那么最好退后一步,看看是否有不同的方法来做你想做的事情。
-
这是泛型的一个常见错误:您认为
ICountryState<Country>可以转换为ICountryState<ICountry>,但它不能。