УчитываяКак отключить класс до его базового типа для установки значений с помощью Activator.CreateInstance?
//all types of T inherit class name of BaseClass...
public void Test<T>(Action<T> CallBack){
var obj = (T) Activator.CreateInstance<T>();
//Debugger shows obj of proper type and shows its proper baseclass
//now I want to change the base class and pass in a value to affect content
var bc = new BaseClass("Parameter1");
//downcast the original obj to type of baseclass
var bcObj = (BaseClass)obj;
//and assign the downcast object the new BaseClass
bcObj = bc;
//debugger shows bcObj IS the same as bc..
//but callback will not send the new bcObj content...
CallBack(obj);
}
Проблема
Когда CallBack происходит изменение базового класса нет! То, что видно, это тот же контекст базового класса, что и сразу после Activator.Creatinstance.
Вопрос
Разве это не возможно обратное приведение объекта и присвоить значение к нему из другого экземпляра класса этого типа?
Возможное решение
Я мог бы содержать BaseClass в супер класс вместо наследования.
Вы никогда не устанавливали никаких значений на obj или bcObj, так почему вы ожидаете каких-либо изменений? –
Я не понимаю. В чем смысл всего этого кода 'bc'? Вы также можете удалить все после строки 'Activator.CreateInstance' до строки до' Callback (obj) ' – MickyD
Обратите внимание, что тип T все наследует BaseClass, я пытаюсь внедрить новый BaseClass в родительский класс. –