.net 是否废弃整个命名空间?
我可以在.NET Framework(3.5和4)中以某种方式将整个命名空间标记为已过时,还是将整个项目标记为已过时?这是不可能的。我想原因是名称空间可以跨越不同的程序集,甚至库的用户也可以使用相同的名称空间,所以它不仅会过时您的代码。名称空间基本上是名称前缀的语法糖。命名空间甚至不能作为属性的目标。过时属性不能应用于命名空间。“过时”属性装饰有.net 是否废弃整个命名空间?,.net,attributes,namespaces,obsolete,.net,Attributes,Namespaces,Obsolete,我可以在.NET Framework(3.5和4)中以某种方式将整个命名空间标记为已过时,还是将整个项目标记为已过时?这是不可能的。我想原因是名称空间可以跨越不同的程序集,甚至库的用户也可以使用相同的名称空间,所以它不仅会过时您的代码。名称空间基本上是名称前缀的语法糖。命名空间甚至不能作为属性的目标。过时属性不能应用于命名空间。“过时”属性装饰有 [AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Struct |
[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargetGets.Delegate,Inherited=false]
您不能将整个命名空间标记为过时,但如果您拥有命名空间中的所有代码,则可以使用继承同时拥有两个命名空间:
namespace New.Namespace
{
/// <summary>
/// Application contract
/// </summary>
public class Application
{
/// <summary>
/// Application Name
/// </summary>
public string ApplicationName { get; set; }
/// <summary>
/// Application Id
/// </summary>
public int ApplicationId { get; set; }
}
}
namespace old.namespace
{
/// <summary>
/// Application contract
/// </summary>
[Obsolete]
public class Application : New.Namespace.Application
{
}
}
名称空间新建。名称空间
{
///
///申请合同
///
公共类应用程序
{
///
///应用程序名称
///
公共字符串ApplicationName{get;set;}
///
///应用程序Id
///
public int ApplicationId{get;set;}
}
}
名称空间old.namespace
{
///
///申请合同
///
[过时]
公共类应用程序:New.Namespace.Application
{
}
}
您必须对旧命名空间中的所有类(枚举、结构等)执行此操作,以提供向后和向前兼容性。命名空间不能标记为已过时,这可能是将程序集标记为已过时的重复项:@Vijay相关主题,但不是重复的。最终将项目和命名空间重命名为Foo.obsolite.Bar。在这种情况下有效,因为它仅在同一解决方案中使用