相关疑难解决方法(0)

在C#中编译时间反射

我经常编写C#代码,必须使用魔术字符串来表达属性名称.每个人都知道魔术弦的问题.它们很难重构,它们没有编译时检查,并且通常会导致难以诊断的问题.然而,C#/ .NET 在整个地方使用它们来表示属性/类/方法名称.

这个问题已持续多年和多年,目前唯一可行的解​​决方案是使用表达式树,然后在运行时解析属性名称.这使您获得令人满意的编译时检查,但它使代码复杂化(需要Expression类型的参数),并且会产生运行时成本.

有没有人知道是否有一个特性考虑因为C#/ .NET添加编译时反射来克服这个普遍存在的问题?

看起来这将是一个简单的补充,它将是一个非破坏性的变化,它将使许多开发人员受益匪浅.typeof()运算符已经执行了编译时反射的形式,因此看起来运算符nameof()(或类似的东西)将非常互补.

此外,有没有人知道这个功能的任何潜在问题?

谢谢您的帮助.

.net c# strong-typing compile-time magic-string

22
推荐指数
3
解决办法
9561
查看次数

在C#中,有一种方法可以使用反射检索内置数据类型属性

使用反射我只想从C#对象中检索内置数据类型属性.有没有更好的方法,然后||Where指定我感兴趣的类型的方法中使用一堆(ors)?

Type sourceType = typeof(TSource);

var props = sourceType.GetProperties()
    .Where(pi => pi.PropertyType == typeof(int)
              || pi.PropertyType == typeof(string));    // .... etc.
Run Code Online (Sandbox Code Playgroud)

c# reflection lambda

4
推荐指数
2
解决办法
599
查看次数