检查对象是否是委托

Ily*_*gan 11 .net c# delegates

在.NET中,有没有办法检查对象是否属于委托类型?

我需要这个,因为我正在记录方法调用的参数,我想打印"(delegate)"所有参数,这些参数是动作或函数.

Jon*_*eet 27

当然,与任何其他类型相同:

if (foo is Delegate)
Run Code Online (Sandbox Code Playgroud)

或者类型:

if (typeof(Delegate).IsAssignableFrom(t))
Run Code Online (Sandbox Code Playgroud)


Lue*_*eTm 5

这对我来说非常适合

class Test
    {
        public delegate void MyHandler(string x);

        public void RunTest()
        {
            var del = new MyHandler(Method);
            if (del is Delegate)
            {
                Console.WriteLine(@"del is a delegate.");
            }
            else
            {
                Console.WriteLine("del is not a delegate");
            }

        }

        private void Method(string myString)
        {
        }
    }
Run Code Online (Sandbox Code Playgroud)