我不能在c#中访问继承的值

本文关键字:继承 访问 不能 | 更新日期: 2023-09-27 18:12:09

我有一个看起来像这样的界面:

public interface ISelectSpace
{
    bool ShowSpaceSelection { get; set; }
    IEnumerable<Space> AvailableSpaces { get; set; }
}

然后我有另一个接口看起来像这样:

public interface ISelectSingleSpace : ISelectSpace
{
    string Space { get; set; }
    string SpaceName { get; set; }
}

然而,当我尝试访问变量availabespaces的IEnumerables列表时,我不能像这样使用计数函数:

public static class SelectSingleSpace
{
    public static void DoStuff(this ISelectSingleSpace selectSingleSpace)
    {
        Console.Write(selectSingleSpace.AvailableSpaces.Count());
    }
}

我没有正确引用变量吗?

我在另一个类中这样初始化这个方法:

var selectSingleSpace = this as ISelectSingleSpace;
selectSingleSpace.DoStuff();

我不能在c#中访问继承的值

试试这个:(我在使用this关键字访问派生类中的一些扩展方法时遇到了麻烦,也许是这样的。在下面的代码中,我尝试绕过这个问题)

public static class SelectSingleSpace
{
    public static void DoStuff(this ISelectSingleSpace selectSingleSpace)
    {
        IEnumerable<Space> AvailableSpaces = selectSingleSpace.AvailableSpaces;
        Console.Write(AvailableSpaces.Count());
    }
}

您所显示的代码部分都很好。你的问题是你没有表现出来的。我已经将以下代码粘贴到一个VS项目中,这已经编译并工作了:

using System;
using System.Collections.Generic;
using System.Linq;
namespace SO16390592
{
    class Program
    {
        static void Main()
        {
            ISelectSingleSpace test = new Test();
            test.AvailableSpaces = new List<Space>(new Space[1]);
            test.DoStuff();
        }
    }
    public class Space
    {
    }
    public interface ISelectSpace
    {
        bool ShowSpaceSelection { get; set; }
        IEnumerable<Space> AvailableSpaces { get; set; }
    }

    public interface ISelectSingleSpace : ISelectSpace
    {
        string Space { get; set; }
        string SpaceName { get; set; }
    }
    public class Test : ISelectSingleSpace
    {
        public bool ShowSpaceSelection { get; set; }
        public IEnumerable<Space> AvailableSpaces { get; set; }
        public string Space { get; set; }
        public string SpaceName { get; set; }
    }

    public static class SelectSingleSpace
    {
        public static void DoStuff(this ISelectSingleSpace selectSingleSpace)
        {
            Console.Write(selectSingleSpace.AvailableSpaces.Count());
        }
    }
}

下面是在控制台上打印的内容:

1

这里是在线演示:http://ideone.com/O2EAak

我建议你向我们展示更多的代码来说明你的问题,或者更好的是,为我们创建一个独立的可重复的案例来展示你的问题。