Первый комментарий.Кажется более естественным поменяться ролями свойств.
public class GenericTestClass<T> where T : BaseClass
{
public BaseClass Entity => EntityCast;
public T EntityCast { get; }
public GenericTestClass(T myClass)
{
EntityCast = myClass;
}
}
Если я правильно вас понимаю, это может быть тем, что вы хотите:
var properyEntity = typeof(GenericTestClass<>).GetProperty("Entity");
Assert.AreEqual(typeof(BaseClass), propertyEntity.PropertyType);
Assert.IsNull(typeof(BaseClass).GetProperty("Val"));
Вы также можете использоватьGenericTestClass<ChildClass>
вместо просто GenericTestClass<>
.
Но я не уверен, что подобный "тест" имеет смысл.
Вы также можете иметь метод (сомнительной ценности!) вот так:
static Type GetCompiletimeTypeOf<T>(T dummy) => typeof(T);
Тогда вы можете сделать:
Assert.AreEqual(GetCompiletimeTypeOf(genericTest.Entity), typeof(BaseClass));
с var genericTest = new GenericTestClass<ChildClass>(new ChildClass());
как в вашем вопросе.