Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface IParentInterface
- {
- }
- public interface IChildInterface : IParentInterface
- {
- }
- public class ParentClass<T> where T: IParentInterface
- {
- }
- public class ChildClass : ParentClass<IChildInterface>
- {
- }
- public class TestClass
- {
- public ChildClass Property { get; set; }
- }
- [TestFixture]
- public class ScratchPad
- {
- [Test]
- public void Assignabl()
- {
- var tc = new TestClass();
- var tct = tc.GetType();
- var pi = tct.GetProperty("Property");
- Assert.IsNotNull(pi);
- Assert.IsTrue(typeof(ParentClass<IChildInterface>).IsAssignableFrom(pi.PropertyType));
- Assert.IsTrue(typeof(ParentClass<>).IsAssignableFrom(pi.PropertyType));
- Assert.IsTrue(typeof(ParentClass<IParentInterface>).IsAssignableFrom(pi.PropertyType));
- }
- }
- public class ParentClass<ParentInterface>
- public class ChildClass : ParentClass<ChildInterface>
- public class ParentClass<T>
- interface IParent { }
- interface IChild : IParent { }
- Parent<IChild>
- Parent<IParent>
- List<ParentInterface> parentList = List<ParentInterface>();
- List<ChildInterface> childList = parentList;
- public interface ParentInterface2 : ChildInterface {}
- childList.Add(new ParentInterface2Implementation());
Add Comment
Please, Sign In to add comment