English 中文(简体)
如何正确使用打字图?
原标题:What is the correct way to use TypeForwardedToAttribute?

我在、is 1。 当我们需要更新旧系统时,这似乎非常有用。 然后,我设定了一个测试解决办法(其中有三个项目),以便利用这一特性。 首先,有一个名为“Animal”的班级图书馆项目。

namespace Animal
{
   public class Dog
   {
      public static string Name = "old version";
   }
}

然后,我创立了一个黄色应用项目,在“Animal”中添加“Animal”作为参考,并在<代码>上添加“Animal”。 主要方法一:

Console.WriteLine(Animal.Dog.Name);

现在它印刷了“旧版本”。 页: 1 现在我开始“升级”现有项目。 我删除了“Animal”中的“Dog

namespace Animal
{
   public class Dog
   {
      public static string Name = "new version";
   }
}

在“Animal”中添加“Animal”。 此外,对“Animal”的“AssemblyInfo.cs

[assembly: TypeForwardedTo(typeof(Animal.Dog))]

从使用这一属性,从现在起,所有<代码>Animal.Dog均已转交<编码>。 Dog category in “AvancedAnimal” ( actual there is no Dog ,在动物体内增加。 我重新编造了整个解决方案,希望“新版本”的黄色应用文字。 但它给我带来了一个汇编错误:

<编码> 名称Dog不能在名称动物体内找到。 这种类型已转交议会高级会议,版本=1.0.0.0,文化=中性,公共Key Token=null 考虑增加提及该大会的内容。

Oh, I m被告知,在提及我的青少年申请时添加“AdvancedAnimal”。 但是,如果我这样做的话,我就不需要再说一句话,因为如果我把“AdvancedAnimal”作为课程“Animal”中的参考。 Dog 系指“AdvancedAnimal”中的条目! 我期望的是,修改“Animal”,加上“AdvancedAnimal”,没有必要改变所有其他项目/级图书馆,因为议会信息中心已经提供了足够的信息。 在更新系统时,这确实是方便的。 否则,我有20个项目提到“Animal”,我需要加上“AdvancedAnimal”,作为所有项目的参考。 更重要的是,我可以发现,在这个解决办法中,“TypeForwarded ToAttribute”的任何用法,删除了它。 你们能否告诉我,我的测试/理想有什么错误?

最佳回答

https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.typeforwardedtoattribute”rel=“noreferer” <>TypeForwarded ToAttribute:

使用<代码>TypeForwardedToAttribute,使一种类型从一个组别转移到另一个组别,而同时又不干扰根据旧组汇编的电话。

但是,你正在把同一组别的类型从同一组别中转至另一组。 这没有任何意义。

让我表明这一点。 服饰 大会。 页: 1

namespace Animal
{
   public class Dog
   { 
      public void printName() {      
           console.writeline("old version");
      }
   }
}

并在其他一些大会(x.dll)中提到

   Dog dg=new Dog();
   dg.printName()

之后,你想要改变印刷Name的功能,但不要触及打电话者(x.dll)(如果 d子被部署,并不想被触动的话)

so you create a new assembly (dll), which got

namespace AdvancedAnimal 
{
   public class Dog
   { 
      public void printName() {      
           console.writeline("new version");
      }
   }
}

现在,你可以通过提及新的残 the和增加新残 the来弥补旧残 the。

[assembly:TypeForwardedTo(typeof(AdvancedAnimal.Dog))]

现在向动物发出任何呼吁。 前往Animal。 Dog.

So

! What I expect is that modifying "Animal", Adding "AdvancedAnimal", no necessary to change all other projects/class libraries because the assembly info already provides enough information. That is really convenient when upgrading a system. Otherwise, I have 20 projects referring to "Animal", I need to add "AdvancedAnimal" as a reference to all of them.

你一定要把Animal列入所有20个项目。 你们必须做的是,在动物身上添加先进动物。

希望这澄清了它能够发挥作用的背景。

http://www.un.org。

I re-compile the whole solution and hope the console application prints "new version". But it gives me a compile error:

整个问题是,我们可以召集新的大会,而不修改召集人。 你们不应重整解决办法,因为你的打电话者仍在提到旧集会所采用的方法。 因此,你得出错误。

The type name Dog could not be found in the namespace Animal . This type has been forwarded to assembly AdvancedAnimal

只是推翻了你老的安乐团;新的集会把它带进了叫.的双手,开了车。 它像一个药店一样工作。

问题回答

这是我第一次听说过这一名词,有趣的是:

我读一下文件的方式,可以把属性用于你只提供一套图书馆剪辑的情况。

请允许我说,你有某种应用,即使用来自DLL的一套植被。 稍后,你决定将这部法律的某些部分移至单独的DLL。 借助<代码>TypeForwarded ToAttribute,你可以这样做,让原有的DLL参考新的编号。 您现在可以将两种电离辐射射线射入现有应用装置,但不得重复应用本身<>。

在你没有控制申请本身的情况下,这样做可能是有益的,但只是提供一套图书馆文件。 为了推进你的编码基础,你可以使用<代码>TypeForwarded ToAttribute,用户可以安全地加以应用,而无需打断任何东西。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...