C# 从添加类型的类重新对类进行排序会产生错误

C# 从添加类型的类重新对类进行排序会产生错误,c#,powershell,exception-handling,add-type,C#,Powershell,Exception Handling,Add Type,我有一个C类processcontroller.cs 在这个类中,我将其他类添加到一个列表对象中,这些类稍后将被调用 我的一个子类如下所示: namespace PowerShellTests { public class Step1 { public void Initialize() { try { File.Open("filethatdoesnotexist.t

我有一个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


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

我的猜测是,如果Powershell是自定义类,则它没有引用您的自定义类。 尝试编译它并将其作为程序集加载

[System.Reflection.Assembly]::LoadFrom("path to assembly")
您需要为自定义类使用“添加类型”。 然后将自定义类的using指令添加到所有其他需要它的类中 这和你在c中做的一样。或者将addtype与


例外处理程序究竟是什么?自定义类?类归属System.ServiceModel.Dispatcher指令?这个没有名为LogExceptionException e的方法。对不起,我应该说,ExceptionHandler类是我编写的自定义类。你是说我应该创建一个类库项目并在其中定义ExceptionHandler吗?到目前为止,我刚刚创建了这些类并从文件夹中引用它们。我认为这是一种处理它的方法。您需要以某种方式加载ExceptionHandler的定义,以便Powershell了解它。拥有程序集的好处是,ExceptionHandler可能拥有的任何其他引用都可以在程序集中引用,除非它是该程序集之外的引用,也应该被引用。你明白我的意思吗?如果内存可用,请让我知道如果不是这样,我想你也可以在Powershell脚本中创建一个类。如果不想创建程序集,也许可以在Powershell中定义该类。我理解你的意思,但是在创建类库并执行类似于你建议的行之后,我如何基于DLL中的类创建对象?我尝试了$PC=namespace.processcontroller,但没有引发任何错误,但当我在$PC上运行Get Member时,会出现错误。以下是一个可能有助于解决此问题的网站:
Add-type $script -UsingNamespace PowerShellTests.MycustomExceptionHandlerClass