【发布时间】:2017-04-04 03:28:50
【问题描述】:
我有一个像这样的抽象泛型类:
public abstract class ServicoAbstrato<TEntity, TId>
where TEntity : EntidadeBasica<TId>
where TId : IEquatable<TId>
{
protected IDao<TEntity, TId> dao; ...
}
public abstract class EntidadeBasica<TId>
where TId : IEquatable<TId>
{ ... }
我想在另一个类中拥有这个泛型类的属性,如下所示:
[AttributeUsage(AttributeTargets.Property | AttributeTargets .Field)]
public class ServicesAttribute : HandlerAttribute
{
public ServicoAbstrato<EntidadeBasica<Type>, Type> servico { get; set; }
public override ICallHandler CreateHandler(IUnityContainer container)
{
return new ServicesHandler(servico);
}
}
但它给了我以下错误:
类型“System.Type”不能用作泛型类型或方法“Servico.ServicoAbstrato”中的类型参数“TId”。没有从“System.Type”到“System.IEquatable”的隐式引用转换
我该如何解决这个问题?
【问题讨论】:
-
很简单,你有一个约束
TId : IEquatable<TId>,而Type不是IEquatable<Type> -
就像在标记的副本中一样,您尝试用作泛型类型参数的类型没有实现您的泛型声明需要类型参数来实现的接口。