You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中调用带Delegate与Callback的C# DLL方法

从PowerShell调用带Delegate回调的C# DLL方法

我有一个C#的BankBalance类,其中的DebitTransaction方法逻辑如下:若余额大于等于待扣款金额则扣除并返回成功通知,否则返回失败通知。

一、C# DLL代码

using System;
namespace BankSystem
{
    public class BankBalance
    {
        public int Balance { get; set; } = 1000;
        // 定义用于通知交易状态的委托
        public delegate void DebitTransactionStatus(string message);
        public void DebitTransaction(int Debit, DebitTransactionStatus debitTransactionStatus)
        {
            if (Balance >= Debit)
            {
                Balance -= Debit;
                debitTransactionStatus("Amount is Debited Successfully");
            }
            else
            {
                debitTransactionStatus("Not enough balance to perform debit operation");
            }
       }
    }
}

二、C#调用方示例代码

以下是C# EXE调用该DLL的示例,可正常运行并得到预期输出:

using System;
using BankSystem;
namespace Transaction
{
    class DebitTransaction
    {
        static void ShowDebitTransactionStatus(string message)
        {
            Console.WriteLine(message);
        }
        static void Main(string[] args)
        {
            BankBalance bankBalance = new BankBalance();
            BankBalance.DebitTransactionStatus debitTransactionStatus = new BankBalance.DebitTransactionStatus(ShowDebitTransactionStatus);
            bankBalance.DebitTransaction(500, debitTransactionStatus);
            bankBalance.DebitTransaction(600, debitTransactionStatus);
        }
    }
}

三、预期输出

Amount is Debited Successfully
Not enough balance to perform debit operation

需求

我需要在PowerShell中调用该C# DLL的DebitTransaction方法,正确注册委托回调以得到上述相同结果。本人是C++/C#开发者,因工作需求转做PowerShell自动化开发,目前是新手,负责的项目中有大量带Delegate和Callback的导出函数,之前尝试的方法均未解决问题。

内容的提问来源于stack exchange,提问作者Gajanana D S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 04:42:03