我有一个如下所示的界面:
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();
答案 0 :(得分:0)
试试这个:
(我在派生类中使用this
关键字访问某些扩展方法时遇到了麻烦,也许就是这样。在下面的代码中,我试图欺骗它)
public static class SelectSingleSpace
{
public static void DoStuff(this ISelectSingleSpace selectSingleSpace)
{
IEnumerable<Space> AvailableSpaces = selectSingleSpace.AvailableSpaces;
Console.Write(AvailableSpaces.Count());
}
}
答案 1 :(得分: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
我建议您向我们展示更多代码,说明您的问题,或者更好的是,为我们创建一个展示您问题的独立可重复案例。