with some step,finaly,i get what's wrong
first
public interface PledgeReadOnly
{
}
this is a interface,and
where P : PledgeReadOnly
it mean p must be a PledgeReadOnly but
public struct x : PledgeReadOnly
{
}
public class y : PledgeReadOnly
{
}
both class and struct and implement from a interface not sure P is a class or a struct you can change your PledgeReadOnly from interface to class or you can change all
where P : PledgeReadOnly
to
where P : class,PledgeReadOnly
it make sure P is a class