Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. public class SomeBaseClass { }
  2. public class SomeClass : SomeBaseClass { }
  3. public class AnotherClass : SomeBaseClass { }
  4.  
  5. public class BaseData
  6. {
  7. public SomeBaseClass mMember;
  8. public BaseData() { }
  9. public TType GetMember<TType>()
  10. where TType : SomeBaseClass
  11. {
  12. return (TType)mMember;
  13. }
  14. }
  15.  
  16. public class Data : BaseData
  17. {
  18. public Data()
  19. {
  20. mMember = new SomeClass();
  21. }
  22.  
  23. //Is this bad
  24. public SomeClass GetMember()
  25. {
  26. return base.GetMember<SomeClass>();
  27. }
  28. }
  29.  
  30. class Program
  31. {
  32. static void Main(string[] args)
  33. {
  34. BaseData lData = new Data();
  35. Data lData2 = new Data();
  36.  
  37. //Call base method with type
  38. SomeBaseClass lTest = lData.GetMember<AnotherClass>();
  39.  
  40. //Cast and call derived method
  41. SomeClass lTest2 = ((Data)lData).GetMember();
  42.  
  43. //Call base method with type and then cast
  44. SomeClass lTest3 = (SomeClass)lData.GetMember<SomeBaseClass>();
  45.  
  46. //Call derived method directly
  47. SomeClass lTest4 = lData2.GetMember();
  48.  
  49. //Throw InvalidCastException
  50. SomeBaseClass lTest5 = lData2.GetMember<AnotherClass>();
  51. }
  52. }
  53.  
  54. lData.GetMemberType<...>();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement