0

我有一个动作,我想通过作为参数获得的类型以两种不同的方式处理。

这些类型与我应该以不同方式处理的其他类型相同。它们派生自相同的接口和相同的抽象类。

决定采取什么行动的方法,获取类型作为参数。

您是否知道如何使其与其他类型不同,并知道何时以一种方式处理它以及何时以第二种方式处理它?

我想为“唯一”类型的类添加属性,并type.GetProperty("UniqueProp")知道它是否是唯一的。但我觉得必须有更好更快的方法来做到这一点。它必须是有效的。

4

1 回答 1

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();
    }
}
于 2013-08-04T15:42:11.033 回答