有没有一种很好的方法可以将常量设置为类名称空间?
namespace ACMECompany.ACMEApp.Services
{
public class MyService
{
private const string WhatWeDo = "ACMECompany.ACMEApp.Services";
private const string WouldBeNice = typeof(MyService).Namespace;
...
}
}
因此,如果将类移动到另一个名称空间,我们不需要担心这些常量。
更多信息 该常量仅用于日志记录 - 将其传递给某个日志方法。这是所有遗留代码所以不会在短期内发生变化。我知道运行时获取此类信息的方法,例如This Question
我们正在使用.NET 4,但很快就会升级到.NET 4.5。
答案 0 :(得分:5)
您不会使用非常量值设置常量变量。这是可以理解的,不是吗?
顺便说一下,C#有readonly
关键字,一旦对象构建时间结束,就会使任何类字段像常量一样工作。它们可以是也可以不是静态的:
public class MyService
{
static MyService()
{
WouldBeNice = typeof(MyService).Namespace;
}
private static readonly string WouldBeNice;
}
...或
public class MyService
{
private static readonly string WouldBeNice = typeof(MyService).Namespace;
}
此外,您可以使用只读属性实现相同的行为:
// Prior to C# 6...
public class MyService
{
private static string WouldBeNice { get { return typeof(MyService).Namespace; } }
}
// Now using C# 6...
public class MyService
{
private static string WouldBeNice => typeof(MyService).Namespace;
}
// Also using C# 6...
public class MyService
{
// This can be even better, because this sets the namespace
// to the auto-generated backing class field created during compile-time
private static string WouldBeNice { get; } = typeof(MyService).Namespace;
}