我不知道您究竟是如何设置类型处理类的,但假设您有类似以下内容。
你说你的两个类都派生自同一个接口。然后,您可以为这两种类型的类提供一个 IWork 接口。
interface IWork { }
然后您可以创建一个自定义属性,您将使用它来装饰您知道是特殊情况并且想要以不同方式处理的类。
class SpecialAttribute : Attribute { }
现在您可以定义用于特殊或标准情况的类。你用 SpecialAttribute 属性装饰 SpecialClass。
[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();
}
}