便携式类库设计

时间:2016-02-05 23:43:02

标签: c# interface cross-platform

我有一个可移植的类库,例如,公开了这个接口方法:

public interface IPortablePainter
{
    void PaintTheSky(PortableColor color);
}

然后,我需要定义一些特定于平台的实现,(完全是发明的,仅举例):

Android实施:

public class AndroidPainter : IPortablePainter
{
    public void PaintTheSky(PortableColor color)
    {
        AndroidFrameworkColor convertedColor = ToColor(color);
        // DrawSky needs an AndroidFrameworkColor, not a PortableColor
        AndroidFrameworkPainter.DrawSky(convertedColor);
    }
}

public static AndroidFrameworkColor ToColor(PortableColor color)
{
    return new AndroidFrameworkColor()
    {
        A = color.A,
        R = color.R,
        G = color.G,
        B = color.B
    };
}

iOS实施:

public class iOSPainter : IPortablePainter
{
    public void PaintTheSky(PortableColor color)
    {
        iOSFrameworkColor convertedColor = ToColor(color);
        // DrawSky needs an iOSFrameworkColor, not a PortableColor
        iOSFrameworkPainter.DrawSky(convertedColor);
    }
}

public static iOSFrameworkColor ToColor(PortableColor color)
{
    return new iOSFrameworkColor()
    {
        AlphaChannel = color.A,
        RedChannel = color.R,
        GreenChannel = color.G,
        BlueChannel = color.B
    };
}

请注意,我不是AndroidFrameworkColoriOSFrameworkColor,也不是AndroidFrameworkPainteriOSFrameworkPainter,我无法触及该类的定义,将其视为构建在平台基础框架上。

问题是:

  • 定义转换器功能,在这种情况下,性能方面的最佳选择是什么?我想定义一个隐式运算符,但我不能因为我没有自己的框架特定类。另外,我不觉得每次都写“{1}}”,因为我必须多打电话。
  • 定义抽象/接口方法的其他模式或设计策略是什么,它可以封装我不拥有的预先存在的类方法?

0 个答案:

没有答案