C#-界面帮助! [英] C# - interface help!

查看:79
本文介绍了C#-界面帮助!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我有两个接口ICritterBrain和ICritter.

ICritterBrain的定义如下:

Hi,

I have two interfaces ICritterBrain and ICritter.

ICritterBrain is defined as follows:

public interface ICritterBrain
{
string Name { get; }
string Creator { get; }
Image[] Images { get; }
ICritter Body { set; }
void Birth();
void Think();
void NotifyBlockedByTerrain();
void NotifyBumped(IWorldObject otherCritter);
void NotifyEaten();
void NotifyCloseToFood(IWorldObject food);
void NotifyCloseToCritter(IOtherCritter otherCritter);
}



这是ICritter的定义:



This is the definition of ICritter:

public interface ICritter
{
void MoveCritter(int speed);
void StopCritter();
int Speed { get; }
int Direction { set; get; }
int Energy { get; }
int Age { get; }
int GetDirectionTo(IWorldObject other);
int GetDirectionTo(int x, int y);
Rectangle GetDestination();
bool IsTerrainBlockingRouteTo(int x, int y);
bool IsTerrainBlockingRouteTo(IWorldObject other);
Strength GetStrengthOf(IOtherCritter otherCritter);
void Attack(IOtherCritter otherCritter);
}




我需要实现接口ICritterBrain的一些属性,例如:
名称
创作者
图片
身体

我没有明确的方法.
目前,我正在这样做:

字符串mName ="blink";
字符串mCreator ="Shivam Mehta(100149264)";
Image [] mImages = new Image [3];//图片可以为Null
ICritter mBody;




I need to implement some properties of interface ICritterBrain like:
Name
Creator
Images
Body

I don''t have a clear idea on how do to so.
Currently I am doing this:

string mName = "blink";
string mCreator = "Shivam Mehta (100149264)";
Image[] mImages = new Image[3];// Images can be Null
ICritter mBody;

public string Name
        {
            get
            {
                return mName;

            }
        }
        public string Creator
        {
            get
            {
                return mCreator;
            }
        }
        public Image[] Images
        {
            get
            {
                return mImages;
            }
        }

推荐答案

我已经演示了如何使用方法实现接口.属性也是背后的方法.
让我们简化一下:

I already demonstrated how to implement interface with methods. Properties are also methods behind.
Let''s simplify it:

public interface ICritterBrain
{
   Image[] Images { get; }
   ICritter Body { set; }
   //...
}

public class CritterBrainGood : ICritterBrain
{
   Image[] ICritterBrain.Images { get { return MyImages; } }
   ICritter ICritterBrain.Body { set { body = value; } } //pay attention: values as a key work here
   //...
   Image[] MyImages;
   ICritter body;
} //CritterBrainGood

public class CritterBrainGood : ICritterQuestionable
{
   public Image[] Images { get { return MyImages; } }
   public ICritter Body { set { body = value; } }
   //...
   Image[] MyImages;
   ICritter body;
} //ICritterQuestionable

public class Critter : ICritter { /*...*/ }

//...

ICritter myCritter = new Critter();
ICritterBrain myCritterBrain = new CritterBrainGood();
myCritterBrain.Body = myCritter;
//..
//or
myCritterBrain.Body = new Critter(); //because Critter is ICritter



—SA



—SA


这篇关于C#-界面帮助!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆