【发布时间】:2016-10-26 03:59:11
【问题描述】:
我在包装我的代码返回值时遇到问题。所以基本上我正在尝试显示以下输出:
Morg,类型,xy,桨
我的代码在 C# 中,根据我下面的代码,这些输出是基于我在字符串中的返回值。我正在使用它们来测试我的程序,看看它是否有效。到目前为止它有效,但不是我想要的方式。我只能显示类型返回值,但似乎无法显示其余部分。
这就是它给我的。
类型
但最上面的那个是我想要显示为输出的那个。不仅仅是类型。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
MorgReader myMorg = new FileReader();
MorgReader myMorg2 = new MorgType(new MorgXY(new MorgMovement(new FileReader())));
Console.WriteLine(myMorg.Read());
Console.WriteLine(myMorg2.Read());
}
}
// THE MAIN ABSTRACT CLASS //
abstract class MorgReader
{
public abstract string Read();
}
// THE CLASS THAT WILL READ THE FILE //
class FileReader : MorgReader
{
public override string Read()
{
return "Morg";
}
}
// MY READER DECORATOR //
abstract class ReaderDecorator : MorgReader
{
private MorgReader wrappedReader;
protected ReaderDecorator(MorgReader wrapped)
{
wrappedReader = wrapped;
}
protected MorgReader WrappedReader
{ get { return wrappedReader; } }
}
class MorgType : ReaderDecorator
{
public MorgType(MorgReader wrapped) : base(wrapped)
{ }
public override string Read()
{
return "type";
}
}
class MorgXY : ReaderDecorator
{
public MorgXY(MorgReader wrapped) : base(wrapped)
{ }
public override string Read()
{
return "x,y";
}
}
class MorgMovement : ReaderDecorator
{
public MorgMovement(MorgReader wrapped) : base(wrapped)
{ }
public override string Read()
{
return "paddle";
}
}
}
【问题讨论】: