gpt4 book ai didi

c# - 如何在我的属性中设置动态值

转载 作者:太空狗 更新时间:2023-10-29 18:08:45 24 4
gpt4 key购买 nike

我想将一个动态变量作为参数传递给我的属性。这里我想使用Environment.MachineName,看下面的代码:

public interface IMonitoringViewModelConfiguration : IConfigurationContainer
{
[ConfigurationKey("MonitoringService", Environment.MachineName)]
string ConnectionString { get; }
}

但是我得到这个错误:错误1 属性参数必须是属性参数类型Abc.ServiceBus.Monitoring.ViewModel的常量表达式、typeof表达式或数组创建表达式

为了传递我的 Environment.MachineName 是否有任何尽可能干净的解决方法?

谢谢。

约翰

PS:我找到了一些讨论这个案例的文章,但它是 2-3 年前写的。但是今天,来自 .NET 4.0 的 clr 是否提供了一些不错的解决方案?

最佳答案

您可以创建一个具有特殊值的枚举,并在属性的单独构造函数重载中接受它们:

enum SpecialConfigurationValues
{
MachineName
// , other special ones
}

class ConfigurationKeyAttribute : Attribute
{
private string _key;
private string _value;

public ConfigurationKeyAttribute(string key, string value)
{
// ...
}

public ConfigurationKeyAttribute(string key, SpecialConfigurationValues specialValue)
{
_key = key;
switch (specialValue)
{
case SpecialConfigurationValues.MachineName:
_value = Environment.MachineName;
break;
// case <other special ones>
}
}
}

[ConfigurationKey("MonitoringService", SpecialConfigurationValues.MachineName)]

关于c# - 如何在我的属性中设置动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com