示例#1
0
        public void TestCanCast()
        {
            Duck       duck  = new Duck();
            IInterface proxy = DuckTyping.Cast <IInterface>(duck);

            Assert.IsTrue(DuckTyping.CanCast <IInterface, Duck>(), "CanCast should have returned true.");
            Assert.IsTrue(DuckTyping.CanCast <IInterface>(duck), "CanCast should have returned true.");
            Assert.IsTrue(DuckTyping.CanCast <IInterface>(typeof(Duck)), "CanCast should have returned true.");
            Assert.IsTrue(DuckTyping.CanCast(typeof(IInterface), duck), "CanCast should have returned true.");
            Assert.IsTrue(DuckTyping.CanCast(typeof(IInterface), typeof(Duck)), "CanCast should have returned true.");

            Assert.IsTrue(DuckTyping.CanCast <Duck, IInterface>(), "CanCast should have returned true.");

            Assert.IsFalse(DuckTyping.CanCast <IFormattable>(duck), "CanCast should have returned false.");


            Assert.IsTrue(DuckTyping.CanCast <GeneralDelegate, SpecializedDelegate>(), "CanCast should have returned true.");
            Assert.IsTrue(DuckTyping.CanCast <SpecializedDelegate, GeneralDelegate>(), "CanCast should have returned true.");
            Assert.IsFalse(DuckTyping.CanCast <GeneralDelegate, EventHandler>(), "CanCast should have returned false.");


            Assert.IsTrue(DuckTyping.CanCast <AttributeTargets, string>(), "CanCast should have returned true.");
            Assert.IsTrue(DuckTyping.CanCast <string, AttributeTargets>(), "CanCast should have returned true.");
            Assert.IsFalse(DuckTyping.CanCast <AttributeTargets, DateTime>(), "CanCast should have returned false.");
        }