我想提供一种扩展方法,但对可以调用它的东西有某种预防措施。
这就是我所拥有的:
using System;
public class Test
{
public static void Main()
{
Person p = new Person();
p.IsValid();
}
}
public class Person
{
public string Name {get;set;}
}
public static class ValidationExtensions
{
public static void IsValid<T>(this T parent) where T : class
{
throw new NotImplementedException("test");
}
}
然而,这并不能阻止某人做"this is a dumb idea".IsValid();
我可以用接口、属性或基类标记 Person 对象,但我不想这样做。有没有办法强制执行约束?
更新:我试图解释的是通过命名空间强制执行约束,因为有一个字符串调用 IsValid 是愚蠢的,我只想要某些模型类