У меня есть класс, Target<T>
, который нельзя изменить, с общим ограничением. Я хочу построить экземпляры этого класса из общего класса, который не имеет ограничений. Следующее демонстрирует намерение того, что я хочу сделать, но я понимаю, что этот код не будет компилироваться и что typeof(T).IsClass
- это проверка во время выполнения, а общие ограничения - это проблемы во время компиляции.
public class TargetMaker<T>
{
public object GetTarget()
{
if (typeof(T).IsClass)
{
return new Target<T>();
}
return default(T);
}
}
public class Target<T> where T : class
{
public Target() { }
}
Может кто-нибудь придумать, как я могу достичь того, чего я хочу, здесь, в TargetMaker, без добавления к нему соответствующего ограничения, сохраняя при этом всю логику в классе TargetMaker?