【发布时间】:2015-10-14 02:35:15
【问题描述】:
我被困在接口和继承上。如果我实现了两个都有一个接口的类,我怎么能把 A 类和 B 类的属性加在一起呢?例如,我想将firstitem 与seconditem 关联起来。
public interface IAlpha
{
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/AddBravoToAlpha/{firstitem}/{seconditem}")]
void AddBravoToAlpha(int firstitem, int seconditem);
}
public interface IBravo
{
// what goes in here?
}
public Class Alpha
{
public Alpha()
{
AlphaAdd = new List<Bravo>();
}
int Firstitem { get; set }
public List<Bravo> AlphaAdd { get; set; }
}
public Class Bravo
{
public Bravo()
{
BravoAdd = new List<Alpha>(); //not sure if Bravo can access Alpha (derived class)
}
int Seconditem { get; set }
Guid Indexer { get; set }
public List<Alpha> BravoAdd { get; set; }
}
public Class BravoDoesAlpha : IBravo, IAlpha //????
{
List<Alpha> alpha = new List<Alpha>();
List<Bravo> bravo = new List<Bravo>();
public void AddBravoToAlpha(int firstitem, int seconditem)
{
var result = alpha.Where(n => String.Equals(n.Firstitem, firstitem)).FirstOrDefault();
var result1 = bravo.Where(n => String.Equals(n.Seconditem, seconditem)).FirstOrDefault();
if (result != null)
{
result.BravoAdd.Add(new Alpha() { Firstitem = firstitem });
}
if (result1 != null)
{
result1.AlphaAdd.Add(new Bravo() { Seconditem = seconditem });
}
}
}
【问题讨论】:
-
如果
Class A已经实现了Interface A,为什么还要在Class B中实现呢?你总是可以尝试创建这个场景。 -
我投票决定将此问题作为题外话结束,因为只有很少的代码会真正编译
-
为什么你认为将
A和B分成单独的.cs文件意味着你需要第三个派生类?如果A和B共享一些描述它们的作用的通用方法,那么您可以创建一个单一接口来覆盖该功能(比如说它称为IDoStuff),其中both @987654333 @ 和B实施:public class A : IDoStuff {}和public class B : IDoStuff {}在这里提供一些奇怪的信息,并不会帮助您及时获得准确的答案,因为目标职位不断移动。 -
@KirstyWhite 根据您对此的 cmet 和我的回答,我认为您需要回到绘图板并考虑该站点如何提供帮助。 SO的想法是回答具有客观答案的狭窄问题。不可能读懂你的想法或任何要求你做这些事情的人的想法。它最初是关于伪代码中的接口和继承的问题,最新的更新是您需要制作 Web 服务吗?这一切都是可以实现的,但前提是您清楚地知道首先需要做什么。
-
抱歉,代码现在应该看起来更清晰了。但是我不确定我应该在 Bravo 的界面中添加什么?正如我所说,我被要求为 Alpha 和 Bravo 实现一个接口。但是,我一直只返回一个界面。
标签: c# linq inheritance interface polymorphism