で一般的なプロパティを作成します。私はこのような1つの抽象ジェネリッククラス持つ非ジェネリッククラス
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);
}
}
それは私に次のエラーを与える:
The type 'System.Type' cannot be used as type parameter 'TId' in the generic type or method 'Servico.ServicoAbstrato'. There is no implicit reference conversion from 'System.Type' to 'System.IEquatable'
この問題を解決するにはどうすればよいですか?
を使用することができ、あなたがcontstraint 'TID持っている:IEquatableを'、と 'type'がが' 'IEquatable ではありません –
Jonesopolis
マークされた重複と同じように、ジェネリック型パラメータとして使用しようとしている型は、ジェネリック宣言で型パラメータを実装する必要があるインターフェイスを実装していません。 –