运行时键入/通用变量

时间:2018-09-12 13:45:29

标签: c# unity3d design-patterns dynamic

我正在寻找一种实现类似于以下内容的类的方法,它包含一个带有两个参数的构造函数,第二个参数是通用运行时类型的。

我正在Unity 3D中使用.Net3.5

public class Parameter
{
    private mParameterName;
    private T parameterValue; // runtime parameter

    public Parameter( string parameterName, string parameterValue ){}
    public Parameter( string parameterName, long parameterValue ){}
    public Parameter( string parameterName, double parameterValue ){}
}

任何对正确方向的帮助将非常有用。预先感谢。

2 个答案:

答案 0 :(得分:2)

这很容易做到:

public class Parameter<T>
{
    private string mParameterName;
    private T parameterValue; // runtime parameter

    public Parameter( string parameterName, T parameterValue )
    {
        this.mParameterName = parameterName;
        //this. is required below because the method parameter and class member
        //have the same name, so this. refers to the class member and without
        //refers to the method parameter.
        this.parameterValue = parameterValue;
    }
}

在这里,您可以在类名称public class Parameter<T>中定义泛型类型参数,然后可以在构造函数中使用它。您不需要为每种类型都使用新的构造函数。

答案 1 :(得分:0)

通常,您必须按如下所示精确定义类Comparator<Petition> cmp = (Petition left, Petition right) -> left.getSignataires().size() - right.getSignataires().size(); List<Petition> resultList = petitionList.stream() .sorted(Collections.reverseOrder(cmp)) .collect(Collectors.toList()); 的类型

T

FIDDLE