public interface SomeInterface { bool Valid { get; } } public struct SomeStruct : SomeInterface { public bool Valid { get { return false; } } } public class Test { public static void Fun(T t) where T:SomeInterface { bool a = t.Valid; } public static void Main() { Fun(new SomeStruct()); } }