C# 结构 - 从外部库访问类

2024-03-12

我对构建我的应用程序的正确方法有疑问。我是 C# 的初学者,所以如果我缺少一些基础,请原谅。 我在网上查看(不仅是stackoverflow)但没有找到任何答案,所以也许这只是因为我做错了什么?

我有一个项目,其中有几个类来定义我的对象。

Object1.class.cs

Object2.class.cs ...

现在,对于某些函数,我创建了类库(.dll 文件)来外部化代码。我的想法是,如果我需要进行更新,我只需要替换 .dll 文件,而不是所有代码。

但是当我想将对象发送到该类时,我遇到了一个问题,我想是因为它们是解决方案的外部吗?

所以我开始怀疑我是否做得正确。

1)有没有办法将对象从我的项目发送到我单独创建的类?

2)这样工作是个好主意吗?我的意思是,我当然可以在我的项目中添加该库,但在这种情况下,我不会有单独的 .dll 文件,并且所有文件都会进入一个 .exe 文件。

3)当我需要测试我的类时,我总是需要关闭我的项目,然后打开类进行编辑,然后返回我的项目进行测试。有更简单的方法吗?

预先感谢您的建议

Edit 2.

Simone Cifani 完美地回答了我的问题:

1)类必须外部化

2)在我的外部库中添加对必要类的引用

3)在我的主项目中添加对每个类和外部库的引用

因为我不知道如何使用接口,所以我不需要它,但我认为即使没有它,一切都会好起来的。


外部化部分代码的一种非常常见的方法是使用接口。

一个简单的例子是:

//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);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 结构 - 从外部库访问类 的相关文章

随机推荐

  • “npm install --global”和“--save”一起吗?

    我想知道在中使用是否有意义npm 安装一起命令 global 和 save 参数 例如 npm install gulp g s 据我所知 npm 系统文件夹中没有 package json 所以我想答案是 否 但我想消除所有疑问 The
  • 使用InstallUtil工具时出现BadImageFormatException错误

    我已经使用 NET 4 0 创建并编译了我的 Windows 服务 所以我转到 NET 4 0 文件夹并说这样的话 我将 bin 文件夹复制到 C 盘以缩短路径 InstallUtil exe C bin Debug MyTestServi
  • 主键和外键索引

    我有一个使用 GUI 工具创建的数据库 我注意到使用不一致KEY aka INDEX 定义 CREATE TABLE foo bar foo id int 10 unsigned NOT NULL bar id int 10 unsigne
  • 用户离开站点时显示消息

    我正在寻找一种方法 如果用户在仅查看一个页面后离开我的网站 则向用户显示一条消息 我找到了这个 http www pgrs net 2008 1 30 popup when leaving website http www pgrs net
  • IOError:[Errno 13]权限被拒绝:'/usr/local/bin/django-admin.py'

    为什么我会得到这个 IOError Errno 13 Permission denied usr local bin django admin py 我跑后pip install django 1 9这是一个问题吗 如果你在安装时看到这个
  • VBA 函数参数列表选择

    我想做类似以下的事情 Public Function myFunc vArg1 as string vArg2 as string vArg3 as A B C End Function 用户调用 vArg3 时会得到一个下拉列表 这类似于
  • 重新创建队列并重新连接到rabbitMQ

    涉及的组件 Spring Config 服务器 Spring AMQP RabbitMQ Spring Config 客户端 Goal 使用推送通知通知配置客户端刷新配置 RabbitMQ 实例 从 docker hub 中 我拉出了rab
  • 在 ExpressJS 中执行 res.send() 之前修改响应正文

    在我目前开发的应用程序中 它使用 Express 就我而言 我想在发送之前获得响应并对其进行修改 出于 JWT 的目的 在此应用程序中 有十几个端点 我不想创建自己的函数 例如sendAndSign 并替换res send 代码中随处可见
  • 与大型开发团队一起管理分发证书

    我是一个开发团队的一员 该团队的许多应用程序跨越多个业务部门和 iOS 团队 我们现在在管理分发证书时遇到很多麻烦 Apple 允许您在一个开发帐户上拥有 3 个分发证书 但无法对证书进行唯一命名 因此它们看起来都一样 不同证书的唯一识别信
  • 我是否可以/应该使用数据库中过去(例如每月)的标签列作为 ML 预测中的特征(无时间序列!)?

    问题 使用标签的过去作为特征是正常 平常 专业吗 尽管这是一个基本问题 但我找不到任何可靠的信息 编辑 请注意 这不是一个时间序列问题 我现在删除了时间序列标签并更改了问题 这个问题是关于随着时间的推移定期变化的功能 是的 但我们不会据此创
  • Helm:错误:找不到可用的版本名称

    我在使用 Helm 时遇到了一些错误 在其他地方找不到这些错误的解释 两个错误如下 Error no available release name found Error the server does not allow access t
  • 使用命令行将 *.xls 或 *.xlsx 文件转换为管道分隔的 .csv 文件

    我有一个像这样的 xlsx 文件 样本 xlsx Heading C1 C2 01 02 C3 C4 R1 1 4 7 10 R2 2 5 8 11 1 R3 3 6 9 0 12 我想将sample xlsx 文件转换为Output cs
  • Google Fonts 中无法访问的字形和符号

    一旦在网站上实施字体 Google 字体样本表上显示的某些字形将不可用 例如 看看 Piazzolla 的预览 请注意箭头如何使用字体提供的自定义字形 然后 将其与此进行比较codepen https codepen io drw158 p
  • Mysql 用前一条记录的值更新一条记录

    我有下表 我想要做的是更新 RefID 3 14 其状态值与之前的值 已添加 相同 我想这样做 直到它达到下一个完成值 因此 当它遇到 已添加 时 它会用 已添加 更新下面所有具有空值的行 直到到达下一个具有已填充状态的 RefID 然后更
  • 在java中,可以创建一个流畅的可扩展类层次结构,其中的方法可以按任何顺序调用吗?

    能否在java中创建一个可扩展的类层次结构 其方法是流畅的并且可以按任何顺序调用 是的 请参阅下面的答案 即使对于无法访问源代码的现有类 只要方法流畅 我正在改造现有的层次结构 并希望使用工厂或至少使用通用构造函数和 最终 不可变的构建器模
  • 响应式引导导航栏中的中心内容

    我无法将内容集中在引导导航栏中 我正在使用 bootstrap 3 我读过很多帖子 但是使用的 CSS 或方法不适用于我的代码 我真的很沮丧 所以这是我最后的选择 任何帮助 将不胜感激
  • R 累积和,但顺序相反

    我有一个 data table 我想在其中添加一个新列 该列的累积总和为var列 但顺序相反 structure list date c 2020 09 18 2020 09 25 2020 09 30 2020 10 02 2020 10
  • F# 自定义运算符优先级

    在 F 中 您可以定义自定义运算符 例如 let input pattern Regex IsMatch input pattern 与 Haskell 不同 自定义运算符的定义没有优先级 F 中自定义运算符的运算符优先级是什么 运算符优先
  • windows.location.href 不适用于 Firefox3

    我们有一个名为 move 的 JavaScript 函数 它只执行 windows location href 任何给定的锚点 该函数适用于 IE Opera 和 Safari 但在 Firefox 中却被忽略 谷歌搜索并没有得到满意的答案
  • C# 结构 - 从外部库访问类

    我对构建我的应用程序的正确方法有疑问 我是 C 的初学者 所以如果我缺少一些基础 请原谅 我在网上查看 不仅是stackoverflow 但没有找到任何答案 所以也许这只是因为我做错了什么 我有一个项目 其中有几个类来定义我的对象 Obje