我有以下界面:

public interface ISoftDeletable
{
    bool IsDeleted { get; set; }
}


而我的实体:

public class Field : ISoftDeletable
{
    [Key]
    public int FieldID { get; set; }

    public bool IsDeleted { get; set; }
...


在我的通用存储库中,我有:

...
if( entity is ISoftDeletable )
{
    entity.IsDeleted = true; // does not know entity is implementing ISoftDeletable, so is throwing error that i cannot set IsDeleted
}
...


但是当然,由于实体是泛型类型,因此c#不知道实体在实现ISoftDeletable。

如何让C#知道可以设置IsDeleted属性?

最佳答案

除了您提供的内容外,我对您的设置一无所知。但这对我来说真是可恶。可能不是,但是我没有足够的图片知道。

要解决您的直接问题,可以将entity强制转换为ISoftDeletable,以便可以设置ISDeleted属性:

((ISoftDeletable)entity).IsDeleted = true;


再次;不得不这样做的感觉;但现在是晚上9:47,所以我今晚不会花太多的脑力去解决这个问题。

关于c# - 告诉C#变量具有接口(interface)的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28869083/

10-12 00:25