Итак, у меня есть такой класс:
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.
Как мне добиться этого апскейтинга?