gpt4 book ai didi

c# - 具有 OR 约束的通用类型属性

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:27 24 4
gpt4 key购买 nike

是否可能有一个类型独立的属性类,可能用“where or”约束修饰?

例子:

public class Attribute<T> where T: string || bool {

public const char ATTRIBUTE_CHAR = 'a';

public string Key { get; set; }
public T Value { get; set; }

public Attribute(string key, T value) {
Key = key;
Value = value;
}

public Attribute(string key, bool value = true)
: base(key, value) {}

public Attribute(string key, string value)
: base(key, value) {}

public override string ToString() {

if(typeof(value) == bool && (bool)value)
return String.Format({0}={1},
ATTRIBUTE_CHAR, key);
else return String.Format({0}={1}:{2},
ATTRIBUTE_CHAR, key, (string)value);
}

}

这样:

Attribute<bool> BoolAttr1     = new Attribute<bool>("bool_1");
Attribute<bool> BoolAttr2 = new Attribute<bool>("bool_2", false);
Attribute<string> StringAttr1 = new Attribute<string>("string_1", "val1");
Attribute<string> StringAttr2 = new Attribute<string>("string_2", "val2");

...everything.ToString();

将产生以下输出

a=bool_1
a=string_1:val1
a=string_2:val2

但是这样的事情是不可能的:

Attribute<int>...

最佳答案

没有。您可能想要做的是:

interface IKeyValue<TKey, TValue>
{
public TKey Key {get;set;}
public TValue Value {get;set;}
}

public class Attribute : IKeyValue<string, string>
{
public override string ToString()
{
return String.Format("{0}={1}:{2}", Constants.ATTRIBUTE_CHAR, Key, Value);
}
}

public class BoolAttribute : IKeyValue<string, bool>
{
public override string ToString()
{
return Value ? String.Format("{0}={1}", Constants.ATTRIBUTE_CHAR, Key) : String.Empty;
}
}

关于c# - 具有 OR 约束的通用类型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17785705/

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