по MSDN
Используйте TypeForwardedToAttribute
атрибут для перемещения типа из одного
сборка на другой без сбоев
абоненты, собранные против старого
сборка.
Но вы делаете пересылку типа из той же сборки в другой тип в той же сборке. Это не имеет никакого смысла.
Давай проясним. Предположим, если у вас есть собака класса в сборке oldAssembly.dll
namespace Animal
{
public class Dog
{
public void printName() {
console.writeline("old version");
}
}
}
и ссылался на него в другой сборке (x.dll)
Dog dg=new Dog();
dg.printName()
позже вы захотели изменить функциональность printName, но не касаясь вызывающей стороны (x.dll) (предположим, что dll развернута и не хочет, чтобы ее трогали)
поэтому вы создаете новую сборку (dll), которая получила
namespace AdvancedAnimal
{
public class Dog
{
public void printName() {
console.writeline("new version");
}
}
}
Теперь вы можете перекомпилировать старую DLL, добавив ссылку на новую DLL и добавив
[assembly:TypeForwardedTo(typeof(AdvancedAnimal.Dog))]
Теперь все вызовы, сделанные в Animal.Dog, перенаправляются в AdvancedAnimal.Dog.
So
! Я ожидаю, что это изменение
«Животное», Добавление «AdvancedAnimal», нет
необходимо поменять все остальные
проекты / библиотеки классов, потому что
Информация о сборке уже предоставляет достаточно
Информация. Это действительно удобно
при обновлении системы. В противном случае я
20 проектов, относящихся к
«Животное», мне нужно добавить
«AdvancedAnimal» как ссылка на все
из них.
Вам не нужно добавлять AdvancedAnimal для всех ваших 20 проектов. Все, что вам нужно сделать, это добавить AdvancedAnimal к Animal.
Надеюсь, это прояснит контекст, в котором это может быть полезно
EDIT:
Я перекомпилирую все решение и
надеюсь, что консольное приложение печатает
"новая версия". Но это дает мне
ошибка компиляции:
Весь смысл в том, что мы можем вызывать новую сборку без изменения вызывающей стороны. Вы не должны перекомпилировать все решение, потому что ваш вызывающий по-прежнему указывает на метод в старой сборке. вот почему вы получили ошибку
Не найдено имя типа «Собака»
в пространстве имен «Животное». Этот тип
был отправлен на собрание
«AdvancedAnimal
Просто перекомпилируйте вашу старую и новую сборку и поместите ее в корзину для вызывающих программ и запустите исполняемый файл. Это будет работать как шарм