遇到.NET Generics的问题

时间:2011-04-04 14:53:03

标签: c# .net generics

我在班级中有以下属性......

public IObjectSet<Foo> Foos { get; set; }
public IObjectSet<Baa> Baas { get; set; }
public IObjectSet<PewPew> Pew^2 { get; set; }

我希望根据预先确定的泛型类型返回其中一个属性的值。

例如

public IObjectSet<T> Set<T>() where T : class
{
    //  THIS CODE DOESN'T COMPILE.
    if (T is User)
    {
        return Users as IObjectSet<T>;

    }
    else if (T is Clan)
    {
        return Clans as IObjectSet<T>;
    }
}

所以,当我有一个特定的类型..我需要检索正确的类型数据。

例如

return TheClass.Set<Foo>().AsQueryable();

这可能吗?

3 个答案:

答案 0 :(得分:6)

if (typeof(T) == typeof(User))

答案 1 :(得分:2)

如果您有实例,则使用

Is,您需要使用

if (typeof(T) == typeof(User)) ..

答案 2 :(得分:1)

使用此:

if(typeof(T) == typeof(User))