型処理クラスをどのように正確に設定したかはわかりませんが、次のようなものがあるとします。
あなたは、両方のクラスが同じインターフェースから派生していると言いました。その後、両方のタイプのクラスに対してIWorkインターフェイスを使用できます。
interface IWork { }
次に、特殊なケースであることがわかっていて別の方法で処理したいクラスを装飾するために使用するカスタム属性を作成できます。
class SpecialAttribute : Attribute { }
これで、特別なケースまたは標準的なケースに役立つクラスを定義できるようになりました。SpecialClassをSpecialAttribute属性で装飾します。
[Special]
class SpecialClass : IWork { }
class StandardClass : IWork { }
また、型処理クラスは型をパラメーターとして受け取るとも言いました。その場合は、渡した型がSpecialAttributeで装飾されているかどうかを確認できます。
class HandleTypes
{
public HandleTypes(Type type)
{
if (type.GetCustomAttributes<SpecialAttribute>().Any())
{
Console.WriteLine("Special case...");
}
else
{
Console.WriteLine("Standard case...");
}
}
}
この設定は、次の方法でテストできます。
class Program
{
static void Main()
{
var standard = new StandardClass();
var special = new SpecialClass();
new HandleTypes(standard.GetType());
new HandleTypes(special.GetType());
Console.Read();
}
}