我想提供一種擴展方法,但在可以調用它的方面有一些預防措施。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