You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

继承外部Interface时触发System.InvalidCastException问题求助

问题解决:C#接口实现与枚举访问错误修复

错误原因分析

  1. 类型转换报错:Unable to cast object of type 'Project.ProgramA' to type 'Ilocation'的核心原因是你可能误将ProgramA的实例强转为Ilocation接口,但ProgramA并未实现该接口。检查代码是否写成了Ilocation obj = new ProgramA();,而非正确的new actualsolution();。
  2. 枚举访问错误:Movement是接口内部定义的枚举类型,不是实例方法,不能用obj.Movement()的方式调用,必须通过接口类型直接访问。
  3. 接口实现细节:显式实现接口方法(int Ilocation.Solution(...))后,只能通过接口实例调用该方法,类实例无法直接访问。

修正后的代码示例

规范后的接口定义(可选但推荐)

// 接口名遵循大驼峰命名规范,接口成员默认public,可省略修饰符
public interface ILocation
{
    enum Movement { North, South, East, West };

    int Solution(char directions);
}

修正后的实现代码

namespace Project
{
    public class ProgramA 
    {
        // 嵌套类可声明为internal或public,方便后续扩展
        class ActualSolution : ILocation
        {
            // 去掉显式接口实现的前缀,让类实例也能调用该方法
            public int Solution(char directions)
            {
                // 示例业务代码:根据方向返回对应步数
                int step = 0;
                switch (directions)
                {
                    case 'N':
                        step = 1;
                        break;
                    case 'S':
                        step = -1;
                        break;
                    // 其他方向逻辑
                }
                return step;
            }
        }

        static void Main()
        {
            // 正确实例化实现类,而非ProgramA
            ILocation obj = new ActualSolution();
            
            // 正确访问枚举类型
            var north = ILocation.Movement.North;
            // 调用接口方法,可直接传字符或枚举转字符
            int result = obj.Solution('N');
            
            // 若要使用枚举值,可转换为对应字符(需根据业务逻辑调整)
            // int result = obj.Solution(north.ToString()[0]);
        }
    }
}

关键注意点

  • 接口命名遵循C#规范:以I开头,大驼峰格式(如ILocation而非Ilocation)。
  • 嵌套类的访问修饰符:默认private仅能在包含类内部访问,若需外部使用需改为internal或public。
  • 枚举访问方式:通过接口类型直接访问(ILocation.Movement),而非实例调用。

内容的提问来源于stack exchange,提问作者Newby2022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:31:03