类构造函数内的泛型对象

时间:2017-11-28 12:27:16

标签: c# generics

我有一个类构造函数。 有人可以解释第二个参数吗? Id是一个函数,通用对象作为第一个参数,可选GUID作为第二个参数吗?

public myClass(int identifier, Func<T, Guid?> Id)

2 个答案:

答案 0 :(得分:2)

  

Id是一个函数,通用对象作为第一个参数,可选GUID作为第二个参数吗?

不完全。它是一个函数,通用对象作为第一个参数(T的类型在其他地方定义,可能在类定义中)返回可空GUID

答案 1 :(得分:-3)

.Net不支持通用构造函数,没有任何意义支持它,因为我们可以通过使用类级泛型来实现这一点。 请看下面的代码,

 class Program
{
    static void Main(string[] args)
    {
        var result = new GenericImplementation<int>(1, GetGuid);
        Console.WriteLine( result.Invoke(1));
        Console.ReadLine();
    }

    public static Guid? GetGuid(int i)
    {
        //Do whateve you want to do
        return new Guid();
    }

}

class GenericImplementation<T>
{
    Func<T, Guid?> _id;
    public GenericImplementation(int identifier, Func<T,Guid?> id)
    {
        _id = id;
    }

    public Guid? Invoke(T value)
    {
        return _id.Invoke(value);
    }

    public bool Equal<U>(U v1, U v2)
    {
        if (v1.GetType() == typeof(string))
        {
            return v1.ToString() == v2.ToString();
        }

        if (v1.GetType() == typeof(int))
        {
            return int.Parse(v1.ToString()) == int.Parse(v2.ToString());
        }

        if (v1.GetType() == typeof(object))
        {
            //Deep level comparision
            return true;
        }

        return false;
    }
}

方法可以是通用的,因为它们可以根据参数(通用)做出不同的反应,例如相等的方法,Equal方法根据提供的参数不同地工作