首页 > C#实例化类

C#实例化类

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

Message msg=new Message(FriendMessage);

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


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;//异常处理
        }
    }
}

可以使用泛型!


class Message {
    public Message(string type){
        //这里判断不同的type进行初始化
    }
}

用工厂方法

【热门文章】
【热门文章】