不支持通用类型 System.Guid

Generic type not supported System.Guid

我想为 Id 属性 类型提供指导,但它不起作用。 是转换错误。 我该怎么做?

public interface IEntity<TKey>
{
    TKey Id { get; set; }
}

继承EntityBase

public abstract class EntityBase<TKey> : IEntity<TKey>
{
    public TKey Id { get; set; }
}

继承IRepository

public interface IRepository<TEntity, TKey> where TEntity : EntityBase<TKey>
{
    void Add(TEntity entity);

    void Delete(TKey key);

    void Update(TEntity entity);

    TEntity Find(TKey key);

    TEntity Find(Expression<Func<TEntity, bool>> lambda);

    IEnumerable<TEntity> WhereSelect(Expression<Func<TEntity, bool>> lambda = null);
}

继承IRepository

public interface INotificationRepository:IRepository<Notification,Guid>
{     

}

我猜你正试图在 Notification 的 class 签名中使用的任何 objectGuid (其中是您在 INotificationRepository 的签名中指定的 struct)。您要么必须在两个地方都使用 Guid,要么在两个地方都使用相同类型或存在隐式转换的 object

IRepository 的接口签名强制了这个条件。

只要 Notification 派生自 EntityBase<Guid> 就没有转换错误。

public class Notification : EntityBase<Guid>
{

}

但是,如果您在不修改 INotificationRepository

的定义的情况下尝试将引用类型用作 TKey,则会出现引用类型转换错误
public class Notification : EntityBase<object>
{

}

The type 'Notification' cannot be used as type parameter 'TEntity' in the generic type or method 'IRepository'. There is no implicit reference conversion from 'Notification' to 'EntityBase'.