我想提供一种扩展方法,但在可以调用它的方面有一些预防措施。C#扩展方法中的通用约束
这是我有:
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对象,但我不希望。有什么办法来强制实施这些限制吗?
UPDATE:我正在试图解释是命名空间来执行,例如限制因为有一个字符串调用的IsValid是愚蠢的,我只希望某些组模型类
你为什么不想要? – neontapir 2012-08-14 18:25:03
也许你应该看看AOP?这是一个体面的例子(http://geekswithblogs.net/thomasweller/archive/2009/11/15/validating-business-objects-with-aop-1-the-domain.aspx)。我是PostSharp的忠实粉丝,以推动您的AOP愿望。 – 2012-08-14 18:28:02
@JTorres谢谢你会看看 – Jon 2012-08-14 18:31:52