可能重复:
确定通用参数是否为Nullable类型
我正在尝试确定类型参数是否为Nullable.
public T Get<T>(int index)
{
var none=default(T);
var t = typeof(T);
BaseVariable v = this[index].Var;
if (T is Nullable) //compiler error
{
if (v == ... )
{
return none;
}
}
//....
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?我尝试过,t == typeof(Nullable)但总是导致错误.
我想要发生的是foo.Get<bool?>(1)有时无效.
我真的不知道要添加什么标题,我想获得Nullable的Type(T).例如,我得到了一个Type为Nullable的对象,我想得到像"System.Int32"这样的东西(当然不是字符串)
我正在尝试使用反射编写一个方法来返回所有类,这些类是使用泛型的类的子类,而不受泛型类型的限制.例如,在EF中我想找到所有的映射类.这些类的设置如下:
public class clientMap : EntityTypeConfiguration<Client> {}
Run Code Online (Sandbox Code Playgroud)
我想在我的程序集中找到所有类的子类EntityTypeConfiguration<T>,而没有特别指定Client为T.我想在我的应用程序中为所有类返回实体类型配置,而不对其进行硬编码.
如果没有泛型,我会循环遍历程序集中的类型,检查是否type.IsSubclassOf(typeof(BaseClass)),但是我不知道在处理泛型时如何执行此操作.
一段代码值一千字……
public enum enTest { a, b, c }
public void PrintEnum<T>()
{
foreach (var E in Enum.GetValues(typeof(T)))
Debug.WriteLine(E.ToString());
}
PrintEnum<enTest>();
PrintEnum<enTest?>(); // This will cause failure in Enum.GetValues()
Run Code Online (Sandbox Code Playgroud)
上面从一个更大的问题简化来说明失败。
有谁知道当有人传递给我一个 Nullable Enum 时,我如何遍历(或获取所有值)?
提前致谢。