gpt4 book ai didi

c# - 在其他项目中更改方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:32 25 4
gpt4 key购买 nike

我在 C# 应用程序中工作。

我有一个用于生成矩阵的库。对于调试,我创建了一个方法 WriteToFile。但是这个库用于 PC 上的一个应用程序和另一个 android 上的应用程序(以后可能是 iOS)。所以我不想在这个库中使用 IO。

这是我的解决方案:

  • 项目库
  • ProjectPC
  • ProjectAndroid

实际上ProjectLibrary中有一个矩阵类

namespace ProjectLibrary
{
public class Matrix
{
public void Generate()
{
//Generate Step 1

//for the debug I want to use this method sometime
WriteToFile();

//Generate Step 2
}

public void WriteToFile()
{
//TODO
//if ProjectPC write on PC
//if ProjectAndroid write on phone
}
}
}

我的问题是:如何创建方法 WriteToFile ?必须在我的项目 ProjectLibrary 中调用此方法,但取决于 ProjectPCProjectAndroid,它不会相同。

最佳答案

使用接口(interface)和依赖注入(inject)!

在您的项目库中创建界面:

public interface IFileWriter
{
void WriteToFile();
}

然后修改您的 Matrix 类以添加依赖项:

public class Matrix
{
private IFileWriter _writer;

public Matrix(IFileWriter writer)
{
_writer = writer;
}

public void Generate()
{
//Generate Step 1

//for the debug I want to use this method sometime
_writer.WriteToFile();

//Generate Step 2
}


}

然后在您的 Windows 项目中创建一个继承自 IFileWriter 的类:

public class WindowsFileWriter : IFileWriter
{
public void WriteToFile()
{
//Your windows code
}
}

然后你在你的 Android 项目中做同样的事情:

public class AndroidFileWriter : IFileWriter
{
public void WriteToFile()
{
//Your android code
}
}

然后当你在 Android 中需要你的矩阵类时,你只需要这样调用它:

AndroidFileWriter myAndroidFileWriter = new AndroidFileWriter();
Matrix myMatrix = new Matrix(myAndroidFileWriter );
myMatrix.Generate();

在 Windows 中:

WindowsFileWriter myWindowsFileWriter = new WindowsFileWriter();
Matrix myMatrix = new Matrix(myWindowsFileWriter );
myMatrix.Generate();

更好的是(从我的角度来看)如果你使用一些 Mvvm 框架,你可以在 IOC 中注册你的 IFileWriter 实现!

例如对于 MvvmCross 这会给你:

Mvx.Register<IFileWriter, AndroidFileWriter>(); //in your android project start

Mvx.Register<IFileWriter, WindowsFileWriter>(); //in your windows project start

然后调用:

Mvx.Resolve<IFileWriter>().Generate();

在你的核心项目中

关于c# - 在其他项目中更改方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com