Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SomeBaseClass { }
- public class SomeClass : SomeBaseClass { }
- public class AnotherClass : SomeBaseClass { }
- public class BaseData
- {
- public SomeBaseClass mMember;
- public BaseData() { }
- public TType GetMember<TType>()
- where TType : SomeBaseClass
- {
- return (TType)mMember;
- }
- }
- public class Data : BaseData
- {
- public Data()
- {
- mMember = new SomeClass();
- }
- //Is this bad
- public SomeClass GetMember()
- {
- return base.GetMember<SomeClass>();
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- BaseData lData = new Data();
- Data lData2 = new Data();
- //Call base method with type
- SomeBaseClass lTest = lData.GetMember<AnotherClass>();
- //Cast and call derived method
- SomeClass lTest2 = ((Data)lData).GetMember();
- //Call base method with type and then cast
- SomeClass lTest3 = (SomeClass)lData.GetMember<SomeBaseClass>();
- //Call derived method directly
- SomeClass lTest4 = lData2.GetMember();
- //Throw InvalidCastException
- SomeBaseClass lTest5 = lData2.GetMember<AnotherClass>();
- }
- }
- lData.GetMemberType<...>();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement