相关疑难解决方法(0)

如何检查泛型类型参数是否可为空?

可能重复:
确定通用参数是否为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)有时无效.

.net c# generics nullable

19
推荐指数
1
解决办法
9631
查看次数

在运行时获取Nullable <T>的Type(T)?

我真的不知道要添加什么标题,我想获得Nullable的Type(T).例如,我得到了一个Type为Nullable的对象,我想得到像"System.Int32"这样的东西(当然不是字符串)

c# nullable

7
推荐指数
1
解决办法
283
查看次数

如何使用反射从泛型返回所有​​类子类,而不提供特定的泛型类型

我正在尝试使用反射编写一个方法来返回所有类,这些类是使用泛型的类的子类,而不受泛型类型的限制.例如,在EF中我想找到所有的映射类.这些类的设置如下:

public class clientMap : EntityTypeConfiguration<Client> {}
Run Code Online (Sandbox Code Playgroud)

我想在我的程序集中找到所有类的子类EntityTypeConfiguration<T>,而没有特别指定Client为T.我想在我的应用程序中为所有类返回实体类型配置,而不对其进行硬编码.

如果没有泛型,我会循环遍历程序集中的类型,检查是否type.IsSubclassOf(typeof(BaseClass)),但是我不知道在处理泛型时如何执行此操作.

c# generics reflection

6
推荐指数
1
解决办法
1402
查看次数

CSharp 枚举通过可为空的枚举

一段代码值一千字……

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 时,我如何遍历(或获取所有值)?

提前致谢。

c# enums

4
推荐指数
1
解决办法
929
查看次数

标签 统计

c# ×4

generics ×2

nullable ×2

.net ×1

enums ×1

reflection ×1