gpt4 book ai didi

c# - 如何在不指定类型的情况下将泛型类存储在列表中?

转载 作者:行者123 更新时间:2023-12-03 14:30:07 26 4
gpt4 key购买 nike

我有以下类(class):

class Parameter<T>
{
public string Index { get; set; }
public T Value { get; set; }
}

我想要一个这样的列表:

class ParameterModel
{
public List<Parameter<>> Parameters {get;}
}

然后我会有这样的代码:

...
Parameter<> parameter = parameterModel.Parameters.Where(p => p.Index == "AAA");
if (parameter is Parameter<bool>)
{
...
}
else if (parameter is Parameter<int>)
{
...
}
...

这是可行的还是我应该使用继承而不是泛型?

提前致谢。

最佳答案

不会

class ParameterModel<T>
{
public List<Parameter<T>> Parameters { get; }
}

做这份工作?


或者您可能不需要不同类型的参数?那么你可以做

public interface IParameter
{
string Index { get; set; }
Type ParameterType { get; }
}

public class Parameter<T> : IParameter
{
public string Index { get; set; }
public T Value { get; set; }
public Type ParameterType
{
get
{
return typeof(T);
}
}
}

class ParameterModel
{
public List<IParameter> Parameters { get; }
}

所以你可以这样做,

var aaaParameter = parameterModel.Parameters.Single(p => p.Index == "AAA");
if (aaaParameter.ParameterType == typeof(bool))
{
...
}
else if (aaaParameter.ParameterType == typeof(string))
{
...
}

但是,考虑到您描述的问题的范围,一个简单的字典可能是最好的。

var parameterModel = new Dictionary<string, object>();

允许

var aaaParameter = parameterModel["AAA"];
if (aaaParameter is bool)
{
...
}
else if (aaaParameter is string)
{
...
}

关于c# - 如何在不指定类型的情况下将泛型类存储在列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18911879/

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