-2

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

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

然后我有另一个界面,如下所示:

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

但是,当我尝试访问变量 AvailableSpaces 的 IEnumerables 列表时,我不能像这样使用 count 函数:

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

我没有正确引用变量吗?

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

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

2 回答 2

0

您显示的代码部分都很好。你所遇到的问题在于你没有表现出来的东西。我已将以下代码粘贴到 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

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

于 2013-05-06T01:01:11.977 回答
0

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

public static class SelectSingleSpace
{
    public static void DoStuff(this ISelectSingleSpace selectSingleSpace)
    {
        IEnumerable<Space> AvailableSpaces = selectSingleSpace.AvailableSpaces;
        Console.Write(AvailableSpaces.Count());
    }
}
于 2013-05-06T00:49:06.723 回答