当前位置: 首页 > 编程语言 > C#

属性-方法-成员有没有类似C#的typeof?分享

时间:2023-04-11 11:18:06 C#

属性/方法/成员有类似C#的typeof的吗?类类型元数据可以通过多种方式获得。其中两个是:vartypeInfo=Type.GetType("MyClass")和vartypeInfo=typeof(MyClass)在不破坏代码的情况下重新构建等)是否有等效的方法来使用元数据和反射来强烈引用成员/属性/方法?我可以将:varpropertyInfo=typeof(MyClass).GetProperty("MyProperty")替换为:varpropertyInfo=property(MyClass.MyProperty)不,不幸的是不是。它已经过讨论,甚至被命名为:infoof(发音为“in-foof”以获得漫画价值),但尚未实施……EricLippert有一篇关于它的博客文章。在C#3中,最接近的做法是让编译器生成一个表达式树,然后将其拉出——但这并不令人愉快。我只是使用Syste.Linq.Expressions来实现“fieldof”fieldof'方法构造'propertyof'所以不要写varmi=typeof(string).GetMethod("Concat",new[]{typeof(object),typeof(目的)});您可以使用:varmi=ReflectionHelper.MethodOf(()=>string.Concat(newobject(),newobject()));我们为什么需要这个?因为现在我们可以安全地重构该方法,所以我们使用一个viareflection帮助器类列表(您可能需要向该方法添加一些信息异常)://////代表一组用于.net反射的帮助器///publicstaticclassReflectionHelper{#regionPublicmethods//////从指定的表达式中获取MethodInfo对象////////////publicstaticMethodInfoMethodOf(Expression>methodExpression){return((MethodCallExpression)methodExpression.}//////从指定表达式获取MethodInfo对象/////////publicstaticMethodInfoMethodOf(ExpressionmethodExpression){return((MethodCallExpression)methodExpression.Body).Method;}//////从指定的expr中获取一个MethodInfo对象ession/////////publicstaticMethodInfoMethodOf(Expression>methodExpression){return((MethodCallExpression)methodExpression.Body).Method;}//////从指定表达式获取MethodInfo对象/////////publicstaticMethodInfoMethodOf(Expression>methodExpression){return((MethodCallExpression)methodExpression.Body).Method;}//////从指定的表达式中获取一个PropertyInfo对象/////////publicstaticPropertyInfoPropertyOf(Expression>propertyGetExpression){return((MemberExpression)propertyGetExpression.Body).MemberasPropertyInfo;}//////从指定的表达式中获取一个PropertyInfo对象/////////publicstaticPropertyInfoPropertyOf(Expression>propertyGetExpression){return((MemberExpression)propertyGetExpression.Body).MemberasPropertyInfo;}//////从指定表达式获取FieldInfo对象/////////publicstaticFieldInfoFieldsOf(Expression>fieldAccessExpression){return((MemberExpression)fieldAccessExpression.Body).MemberasFieldInfo;}//TODO:ConstructorOf(...)#endregion//公共方法}据我所知,我们不能使用相同的方法来获取getParameterInfo或EventInfoelse一种方法,由JbEvain描述,参见:http://evain.net/blog/articles/2010/05/05/parameterof-propertyof-methodof?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+jbevain+%28Jbat++A+简而言之%29仍然没有infoof但nameof在c#6:varpropertyInfo=typeof(MyClass).GetProperty(nameof(MyClass.MyProperty))肯定不会更简洁,但至少很重Constructfriendly不,c#中没有这样的语法。以上是C#学习教程:对于属性/方法/成员,有没有类似C#的typeof?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢