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