小编raf*_*ags的帖子

为什么编译器选择了错误的方法重载?

我有这个简单的方法:

public void CacheDelegate(Object obj, MemberInfo memberInfo)
{
   switch (memberInfo.MemberType)
   {
    case MemberTypes.Field:
       var fieldInfo = (FieldInfo) memberInfo;
       CacheDelegate(obj, fieldInfo);
       break;
    case MemberTypes.Property:
       var propertyInfo = (PropertyInfo) memberInfo;
       CacheDelegate(obj, propertyInfo);
       break;
    case MemberTypes.Method:
       var methodInfo = (MethodInfo) memberInfo;
       CacheDelegate(obj, methodInfo);
       break;
    default:
       throw new Exception("Cannot create a delegate for MemberInfo provided.");
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的方法解析了 memberInfo 的类型,并从下面调用了适用的方法:

public void CacheDelegate(Object obj, FieldInfo fieldInfo)
{
   // Do stuff...
}

public void CacheDelegate(Object obj, PropertyInfo propertyInfo)
{
   // Do stuff...
}

public sealed …
Run Code Online (Sandbox Code Playgroud)

c# polymorphism unity-game-engine

5
推荐指数
1
解决办法
3681
查看次数

标签 统计

c# ×1

polymorphism ×1

unity-game-engine ×1