拡張メソッドを提供したいのですが、それを何と呼ぶことができるかについて、ある種の防止策があります。
これは私が持っているものです:
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を呼び出す文字列を持つことは愚かであり、特定のモデルクラスのセットのみが必要だからです。