1

我有一个 C# 类(processcontroller.cs)。

在这个类中,我将其他类添加到列表对象(这些类将在稍后调用)。

我的一个子类如下所示:

namespace PowerShellTests
{
    public class Step1
    {
        public void Initialize()
        {
            try
            {
                File.Open("filethatdoesnotexist.txt", FileMode.OpenOrCreate);
            }
            catch (Exception exc)
            {
                ExceptionHandler.LogException(exc);
            }
        }
    }
}

我定义了我的流程控制器路径,然后将其设置为第一个子类,如下所示:

processController.steps[0] = $Step1Class

我用以下 3 个 PS 命令定义 $Step1Class

$script = [io.file]::readalltext('step1.cs')
add-type $script -lang csharpversion3
$Step1Class = New-Object Step1

但是在上面代码的最后一行我得到一个错误:

当前上下文中不存在名称 ExceptionHandler。

我理解为什么会触发错误,但是除了ExceptionHandler在 Step1 类本身中定义之外,我还有哪些其他选项?我不想在 Step1.cs 中定义它的原因是因为这意味着我必须为每个其他步骤类重复它。

4

2 回答 2

0

我的猜测是 Powershell 没有引用您的自定义类(假设它是自定义类)。尝试编译它并将其作为程序集加载。

[System.Reflection.Assembly]::LoadFrom("path to assembly")
于 2012-12-04T07:58:06.860 回答
0

您需要add-type为您的自定义类使用。然后using在需要它的所有其他类中为您的自定义类添加指令(这与您在 c# 中执行此操作的方式相同)。或 add-type

Add-type $script -UsingNamespace PowerShellTests.MycustomExceptionHandlerClass
于 2012-12-04T08:33:41.553 回答