如何在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
相关产品推荐
相关产品推荐

