System.Reflection.MemberTypes 在 DNX 5.0 中去了哪里?
Where did System.Reflection.MemberTypes go in DNX 5.0?
.net 4.5 有。
它在 DNXCore v5 中的什么位置?
我的具体错误信息是:
DNXCore,Version=v5.0 error CS0103: The name 'MemberTypes' does not exist in the current context.
在以前的 .nets 中,它是 System.Reflection
上的 Enum
,并且是 obj.GetType().GetMember(memberName).MemberType
(字段、属性 等)[=21= 的结果]
编辑:
这就是我正在做的事情:
using System.Linq;
using System.Reflection;
internal static object Send(object obj, string callableName, object[] parameters = null)
{
var info = InfoFor(obj, callableName);
return ValueFor(obj, info);
}
其中 InfoFor
returns MethodInfo
、PropertyInfo
或任何其他匹配 callableName
和下面的 ValueFor(试图使用 MemberTypes 的地方)
private static object ValueFor(object obj, dynamic member)
{
object value = null;
if (member != null)
{
switch ((System.Reflection.MemberTypes)member.MemberType)
{
case MemberTypes.Field:
value = ((FieldInfo)member).GetValue(obj);
break;
case MemberTypes.Property:
value = ((PropertyInfo)member).GetValue(obj, null);
break;
...
看起来(至少现在)this is the recommended way to achieve the same functionality.
FieldInfo field = member as FieldInfo;
if (field != null)
return field.GetValue(obj);
PropertyInfo property member as PropertyInfo;
if (property != null)
return property.GetValue(obj, null);
.net 4.5 有。 它在 DNXCore v5 中的什么位置?
我的具体错误信息是:
DNXCore,Version=v5.0 error CS0103: The name 'MemberTypes' does not exist in the current context.
在以前的 .nets 中,它是 System.Reflection
上的 Enum
,并且是 obj.GetType().GetMember(memberName).MemberType
(字段、属性 等)[=21= 的结果]
编辑:
这就是我正在做的事情:
using System.Linq;
using System.Reflection;
internal static object Send(object obj, string callableName, object[] parameters = null)
{
var info = InfoFor(obj, callableName);
return ValueFor(obj, info);
}
其中 InfoFor
returns MethodInfo
、PropertyInfo
或任何其他匹配 callableName
和下面的 ValueFor(试图使用 MemberTypes 的地方)
private static object ValueFor(object obj, dynamic member)
{
object value = null;
if (member != null)
{
switch ((System.Reflection.MemberTypes)member.MemberType)
{
case MemberTypes.Field:
value = ((FieldInfo)member).GetValue(obj);
break;
case MemberTypes.Property:
value = ((PropertyInfo)member).GetValue(obj, null);
break;
...
看起来(至少现在)this is the recommended way to achieve the same functionality.
FieldInfo field = member as FieldInfo;
if (field != null)
return field.GetValue(obj);
PropertyInfo property member as PropertyInfo;
if (property != null)
return property.GetValue(obj, null);