mku*_*kus 11 .net c# attributes obsolete
我想知道只在运行时检查过时的属性?
认为你有两个组件.程序集A使用程序集B中的方法.之后,我们将程序集B中的方法标记为过时,这会在编译程序集A时导致编译时错误.
到目前为止没有问题,但问题是旧的A组件是否继续与新的B组件一起工作?谢谢
Mar*_*ell 14
这取决于你在做什么.该[Obsolete]
属性主要用于编译时,但要注意运行时的某些部分在存在时具有不同的行为(参见下文).这可能会导致问题,甚至现有的未重建代码,所以我们必须得出结论,NO,[Obsolete]
不仅在编译期进行检查.
例如,下面的代码将写入Foo
但不会Bar
:
using System;
using System.Xml.Serialization;
public class Data
{
public int Foo { get; set; }
[Obsolete] public int Bar {get;set;}
static void Main()
{
var data = new Data { Foo = 1, Bar = 2 };
new XmlSerializer(data.GetType()).Serialize(Console.Out, data);
}
}
Run Code Online (Sandbox Code Playgroud)
(XmlSerializer
也是运行时 - 不是编译器的一部分)
构建一个使用另一个程序集中标记为Obsolete的方法的程序集会导致编译时警告(除非您启用了"显示错误显示警告").
没有什么能阻止你使用这种方法,而它仍然在引用的程序集中.Obsolete属性是库开发人员让使用库的人知道他们应该使用不同的方法来实现他们需要的方法.
要回答你的问题,是的,较旧的装配件A将继续使用新的装配件B.(提供装配版本保持不变)
归档时间: |
|
查看次数: |
1170 次 |
最近记录: |