C# 结构 - 从外部库访问 class
C# Structure - Access class from external library
我对构建我的应用程序的正确方法有疑问。我是 C# 的初学者,如果我缺少一些基础,请原谅。
我在网上查看(不仅是 Whosebug),但没有找到任何答案,所以也许这只是因为我做错了什么?
我有一个项目,其中有几个 classes 来定义我的对象。
Object1.class.cs
Object2.class.cs
...
现在,对于某些功能,我创建了 class 库(.dll 文件)来外部化代码。这个想法是,如果我需要进行更新,我只需要替换 .dll 文件,而不是所有代码。
但是当我想将对象发送到 class 时遇到问题,我想是因为它们在解决方案之外?
所以我开始怀疑我是否做对了。
1) 有没有办法将对象从我的项目发送到我单独创建的 class?
2) 这样工作是个好主意吗?我的意思是,我当然可以在我的项目中添加库,但在那种情况下,我不会有单独的 .dll 文件,所有文件都放在一个 .exe 文件中。
3) 当我需要测试我的class时,我总是需要关闭我的项目,然后打开class编辑它,然后回到我的项目来测试它。有更简单的方法吗?
提前感谢您的建议
编辑 2.
Simone Cifani 完美地回答了我的问题:
1) 类 必须外部化
2) 在我的外部库中添加对必要 classes 的引用
3) 在我的主项目
中添加对每个class和外部库的引用
因为我不知道如何使用接口,所以我会没有它,但我认为即使没有它也会很好。
外部化部分代码的一种非常常见的方法是使用接口。
一个简单的例子是:
//CalculatorInterface.dll
namespace Calculator.Interface
{
interface ICalculator
{
int DoCalculus(List<object> list);
}
}
//CalculatorImplementation_1.dll
// Add a reference to CalculatorInterface.dll
namespace Calculator.Implementation
{
using Calculator.Interface;
class CalculatorImplementation_1 : ICalculator
{
public int DoCalculus(List<object> list)
{
int result = 0;
foreach (Object obj in list)
{
if (obj is int)
{
result += (int)obj;
}
}
return result;
}
}
}
//Calculator.dll
// Add a reference to CalculatorInterface.dll
// Add a reference to CalculatorImplementation_1.dll (or dynamically load it)
namespace Calculator
{
using Calculator.Interface;
using Calculator.Implementation;
class MyCalculator
{
void CalculateSomething()
{
List<Object> list = new List<Object>();
list.Add(1);
list.Add(2);
list.Add("SomeString");
ICalculator calculator = new CalculatorImplementation_1();
int result = calculator.DoCalculus(list);
Console.Write(result);
}
}
}
我对构建我的应用程序的正确方法有疑问。我是 C# 的初学者,如果我缺少一些基础,请原谅。 我在网上查看(不仅是 Whosebug),但没有找到任何答案,所以也许这只是因为我做错了什么?
我有一个项目,其中有几个 classes 来定义我的对象。
Object1.class.cs
Object2.class.cs ...
现在,对于某些功能,我创建了 class 库(.dll 文件)来外部化代码。这个想法是,如果我需要进行更新,我只需要替换 .dll 文件,而不是所有代码。
但是当我想将对象发送到 class 时遇到问题,我想是因为它们在解决方案之外?
所以我开始怀疑我是否做对了。
1) 有没有办法将对象从我的项目发送到我单独创建的 class?
2) 这样工作是个好主意吗?我的意思是,我当然可以在我的项目中添加库,但在那种情况下,我不会有单独的 .dll 文件,所有文件都放在一个 .exe 文件中。
3) 当我需要测试我的class时,我总是需要关闭我的项目,然后打开class编辑它,然后回到我的项目来测试它。有更简单的方法吗?
提前感谢您的建议
编辑 2.
Simone Cifani 完美地回答了我的问题:
1) 类 必须外部化
2) 在我的外部库中添加对必要 classes 的引用
3) 在我的主项目
中添加对每个class和外部库的引用因为我不知道如何使用接口,所以我会没有它,但我认为即使没有它也会很好。
外部化部分代码的一种非常常见的方法是使用接口。
一个简单的例子是:
//CalculatorInterface.dll
namespace Calculator.Interface
{
interface ICalculator
{
int DoCalculus(List<object> list);
}
}
//CalculatorImplementation_1.dll
// Add a reference to CalculatorInterface.dll
namespace Calculator.Implementation
{
using Calculator.Interface;
class CalculatorImplementation_1 : ICalculator
{
public int DoCalculus(List<object> list)
{
int result = 0;
foreach (Object obj in list)
{
if (obj is int)
{
result += (int)obj;
}
}
return result;
}
}
}
//Calculator.dll
// Add a reference to CalculatorInterface.dll
// Add a reference to CalculatorImplementation_1.dll (or dynamically load it)
namespace Calculator
{
using Calculator.Interface;
using Calculator.Implementation;
class MyCalculator
{
void CalculateSomething()
{
List<Object> list = new List<Object>();
list.Add(1);
list.Add(2);
list.Add("SomeString");
ICalculator calculator = new CalculatorImplementation_1();
int result = calculator.DoCalculus(list);
Console.Write(result);
}
}
}