我不能在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();
试试这个:(我在使用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
我建议你向我们展示更多的代码来说明你的问题,或者更好的是,为我们创建一个独立的可重复的案例来展示你的问题。