C#实例化类

我希望写一个类,在实例化的时候可以这样

Message msg=new Message(FriendMessage);

FriendMessage是这个消息的类型。不同类型有不同属性。比如FromUin,ToUin,应该如何写类,使得在实例化的时候可以指定类型?
谢谢!

阅读 8.3k
4 个回答
class Message {
    public Message(string type){
        //这里判断不同的type进行初始化
    }
}

可以使用泛型!

新手上路,请多包涵

LZ给的信息还是有点模糊,下面是我的理解下写出的代码,希望能对你有所帮助!

//运用LSP 原则+工厂方法  实现松耦合
//类型
public enum MessageType
{
    FromUin = 1,
    ToUin = 2
}
//基类
public abstract class Message
{
    //消息内容
    string messge { get; set; }
    public abstract void ShowInfo();
}

public class FromUinMessage : Message
{
    //新增属性
    public string Name { get; set; }

    public override void ShowInfo()
    {
        //......
    }
}

public class ToUinMessage : Message
{
    //新增属性
    public string Color { get; set; }

    public override void ShowInfo()
    {
        //......
    }
}
public class UninService
{
    private Message _message;
    public UninService(MessageType messageType)
    {
        this._message = UninFactory.GetMessageType(messageType);
    }
    public void ShowMessage()
    {
        _message.ShowInfo();
    }
}

//工厂方法
public class UninFactory
{
    public static Message GetMessageType(MessageType messageType)
    {
        switch (messageType)
        {
            case MessageType.FromUin:
                return new FromUinMessage();
            case MessageType.ToUin:
                return new ToUinMessage();
            default:
                return null;//异常处理
        }
    }
}
新手上路,请多包涵

用工厂方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进