我有一个这样的抽象泛型类:
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'
的隐式引用转换
如何解决此问题?
答案 0 :(得分:0)
您在Type
定义的地方使用TId
。并TId
作为where
- 子句中的限制,因此它必须是IEquatable<TId>
类型。
Type
(至少您使用的Type
是Microsoft类,但不符合该条件。
如果某个类Equatable<T>
实现了接口IEquatable<T>
,可以使用
public ServicoAbstrato<EntidadeBasica<Type>, Equatable<Type>> servico { get; set; }