我想通过我作为参数获得的类型以两种不同的方式处理我的动作。
这些类型与我应该以不同方式处理的其他类型相同。 它们派生自相同的接口和相同的抽象类。
决定要执行的操作的方法,将Type作为参数。
您是否知道如何使其与其他类型区别开来,并知道何时以一种方式处理它以及何时以第二种方式处理它?</ p>
我想过将属性添加到“唯一”类型的类中,并通过type.GetProperty("UniqueProp")
知道它是否唯一。
但我觉得必须有一种更好,更快的方法。它必须高效。
答案 0 :(得分:0)
我不知道您是如何设置类型处理类的,但假设您有类似以下内容。
你说你的两个类都来自同一个接口。然后,您可以为两种类型的类提供 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();
}
}