如何应用工厂模式,接口没有方法属于实现的类

问题描述

我正在应用工厂模式。有一个接口,并且有两个类从该接口继承。

我还创建了一个类,其作用是创建工厂对象。如果创建了工厂对象,则出现错误。 “无重载方法”。因为此方法不在界面中。

如何使用工厂对象实现工厂方法,以获得额外的方法

        [Test]
    public void XML_Deserialize_ToObject_FromURL_WithRootAttirbuteName()
    {
        var xmlSerializerTCMB = GenericSerializer<Tarih_Date>.CreateSerializerObject(DataFormatType.XML);

        var kur = xmlSerializerTCMB.DeserializefromLink("https://www.tcmb.gov.tr/kurlar/today.xml","Tarih_Date");

        Assert.IsTrue(kur.Currency.Length > 0);
    }

下面列出的代码

接口

public interface IGenericSerializer<T>
{
    void SerializetoFile(T objectData,string fileName);
    string SerializetoString(T objectData);
    T DeserializefromFile(string fileName);
    T DeserializefromString(string mediaTypestring);
    T DeserializefromLink(string link);
}

XmlGenericSerializer,此方法具有额外的方法(DeserializefromLink),该方法不属于该接口。

public class XmlGenericSerializer<T> : IGenericSerializer<T>
{
    public T DeserializefromFile(string fileName)
    {

    }

    public T DeserializefromLink(string link)
    {

    }

    public T DeserializefromString(string xmlString)
    {

    }

    public void SerializetoFile(T objectData,string fileName)
    {

    }

    public string SerializetoString(T objectData)
    {

    }

    public T DeserializefromLink(string link,string xmlRootAttributeName)
    {

    }
}

JsonGenericSerializer

 public class JsonGenericSerializer<T> : IGenericSerializer<T>
{
    public T DeserializefromFile(string fileName)
    {

    }

    public T DeserializefromLink(string link)
    {
        
    }

    public T DeserializefromString(string jsonString)
    {
       
    }

    public void SerializetoFile(T objectData,string fileName)
    {            
        
    }

    public string SerializetoString(T objectData)
    {
         
    }
}

工厂类

        public static class GenericSerializer<T>
{ 

    public static IGenericSerializer<T> CreateSerializerObject(DataFormatType dataFormat)
    {
        IGenericSerializer<T> serializer = null;
        switch (dataFormat)
        {
            case DataFormatType.XML:
                serializer = new XmlGenericSerializer<T>();
                break;
            case DataFormatType.JSON:
                serializer = new JsonGenericSerializer<T>();
                break;
            default:
                break;
        }

        return serializer;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)