Итак, у меня есть класс вроде этого:
public class A {
internal A(int i) { ... }
public int Foo { get; set; }
}
Этот класс затем наследуется кучей сгенерированных классов, например:
public class B : A {
...
}
Конструктор, основанный на int
, не подвергается наследуемому классу (по соображениям дизайна я не хочу, чтобы он был открыт). В моей библиотеке, которая содержит определение для класса A
, у меня есть такой метод:
public T Load<T>() where T : A {
//do some stuff, create an instance of T from an int, then return it
}
И тогда я буду использовать его следующим образом:
B b = Helper.Load<B>();
Поскольку конструктор, который я хочу использовать, не подвергается классу B
, когда я делаю typeof(T).GetConstructor(typeof(int))
Я не возвращаю конструктор, поэтому хочу, чтобы я сделал это:
return (T)new A(/*some int */);
Но это дает мне ошибку времени выполнения System.InvalidCastException
, что я не могу использовать тип A для типа B.
Как я могу достичь этого повышения?