嘿,我想我的想法是错误的,但我不确定什么是最好的。我想要一个带有成员变量的类,该变量可以是任何类型,具体取决于当时的需要。到目前为止,我有这样的事情:
public class ConfigSetting<T> {
private T value;
public T GetValue() {
return value;
}
public void ChangeValue() {
}
public ConfigSetting(string heading, string key) {
this.value = DerivedMethods.configsettings.SettingGroups[heading].Settings[key].RawValue;
}
}
目前,“this.value”行右侧返回的类型是字符串。我知道这里似乎我不需要使用除字符串类型之外的任何东西,但最终我将扩展构造函数,使得“this.value”可以是字符串、int、float 或 bool。
不管怎样,我的编译器说“无法将‘string’转换为‘T’”,所以我认为我正在做一些非常倒退的事情。
谢谢。
您遇到了问题,因为这不是泛型的良好使用。如果泛型类型参数只能以四种不同的方式构造——字符串、浮点数、布尔值和整数——那么这不是很好generic。我希望通用的东西可以是任何类型.
如果我有一个东西只能是四种类型中的一种,那么我会像这样建模:
abstract class ConfigSetting
{ /* shared code here */ }
class TextSetting : ConfigSetting
{ /* Code here to handle string settings */ }
class BooleanSetting : ConfigSetting
{ /* ...
等等。然后我可能会给它们每个人一个内部构造函数,并将基类变成factory对于派生类,使用工厂模式。
仅当您的解决方案确实有效时才使用泛型generic. Like List<T>
例如,可以是一个列表anything:整数、字符串、数组、字典、函数等等。如果您正在建模的事物具有少量可能的类型,则只需为每种类型创建一个即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)