Jim*_*988 1 c# types interface
我有以下界面:
public interface ISoftDeletable
{
bool IsDeleted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而我的实体:
public class Field : ISoftDeletable
{
[Key]
public int FieldID { get; set; }
public bool IsDeleted { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
在我的通用存储库中,我有:
...
if( entity is ISoftDeletable )
{
entity.IsDeleted = true; // does not know entity is implementing ISoftDeletable, so is throwing error that i cannot set IsDeleted
}
...
Run Code Online (Sandbox Code Playgroud)
但是当然,c#并不知道实体正在实现ISoftDeletable,因为实体是泛型类型.
我怎样才能让C#知道IsDeleted属性可以设置?
根据您的代码,我会稍微将其更改为:
var softDelete = entity as ISoftDeletable;
if(softDelete != null)
{
softDelete .IsDeleted = true;
}
Run Code Online (Sandbox Code Playgroud)
这段代码对它实际做的事情(IMO)更具可读性.
我不知道你的设置比你提供的更多; 但这对我来说很可疑.它可能不是,但我没有足够的图片知道.
为您解决紧迫的问题,你可以投出entity
的ISoftDeletable
,这样的ISDeleted
属性可以设置为:
((ISoftDeletable)entity).IsDeleted = true;
Run Code Online (Sandbox Code Playgroud)
再次; 关于不得不这样做的事情; 但现在是晚上9点47分,所以今晚我不会花太多脑力来搞清楚这一点.
归档时间: |
|
查看次数: |
144 次 |
最近记录: |