通用方法适用于一个 class 但不适用于另一个,具有相同的界面

Generic method working for one class but not the other, with the same interface

我有两个类

[DataContract]
public class HiveReference : IGUID
{
    [BsonId]
    [DataMember]
    public Guid GUID{ get; set; }
    ....
}
...

[DataContract]
public class HiveByteChunk : IGUID
{
    [DataMember]
    [BsonId]
    public Guid GUID { get; set; }
    ...
}

我的界面...

public interface IGUID
{
    Guid GUID {get;set;}
}

那我有一个扩展方法...

public static void InsertIfNotExists<T>(this T member) where T: IGUID
{
    if (!(member).Exists())
    {
        member.Insert();
    }
}

public static void Insert(this object member) 
{
    DBHelper.Insert(member);
}

然后我的实现代码...

HiveReference hf = new HiveReference();
hf.InsertIfNotExists();

HiveByteChunk chunk = new HiveByteChunk();
chunk.InsertIfNotExists();

最后一行中断,编译器错误:

Error   CS0311
    The type 'HiveLibrary.HiveBytes.HiveByteChunk' cannot be used as type parameter 'T' in the generic type or method 'Extensions.InsertIfNotExists<T>(T)'.
    There is no implicit reference conversion from 'HiveLibrary.HiveBytes.HiveByteChunk' to 'HiveLibrary.IGUID'.

如果两个类都实现了接口,为什么第一个可以调用扩展,而最后一个不能?我是否遗漏了一些明显的东西?

问题是我在不同的命名空间中有一个重复的接口。一旦我删除它,一切都按预期工作。