- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下 PowerShell 片段:
$csharpString = @"
using System;
public sealed class MyClass
{
public MyClass() { }
public override string ToString() {
return "This is my class. There are many others " +
"like it, but this one is mine.";
}
}
"@
Add-Type -TypeDefinition $csharpString;
$myObject = New-Object MyClass
Write-Host $myObject.ToString();
如果我在同一个 AppDomain 中运行多次(例如,在 powershell.exe 或 powershell_ise.exe 中运行脚本两次),我会收到以下错误:
Add-Type : Cannot add type. The type name 'MyClass' already exists.
At line:13 char:1
+ Add-Type -TypeDefinition $csharpString;
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (MyClass:String) [Add-Type],
Exception
+ FullyQualifiedErrorId :
TYPE_ALREADY_EXISTS,Microsoft.PowerShell.Commands.AddTypeCommand
如何将调用转接至 Add-Type -TypeDefinition 使其只被调用一次?
最佳答案
这个技术对我来说很有效:
if (-not ([System.Management.Automation.PSTypeName]'MyClass').Type)
{
Add-Type -TypeDefinition 'public class MyClass { }'
}
在内部,PSTypeName 类调用 LanguagePrimitives.ConvertStringToType() 方法来处理繁重的工作。成功时它会缓存查找字符串,因此额外的查找速度更快。
我还没有确认是否像 x0n 和 Justin D 提到的那样在内部抛出任何异常。
关于powershell - 如果尚未添加类,如何有条件地使用 Add-Type -TypeDefinition 添加类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552801/
这个让我发疯。 AssemblyDefinition asm1 = AssemblyDefinition.ReadAssembly(example); AssemblyDefinition asm2
有人可以解释这种方法与 Add-Type 之间的区别吗 $definition = [Text.StringBuilder]"" [void]$definition.AppendLine('[
我正在使用 JB Evain 的 Mono.Cecil 对已编译的 DLL 执行一些字节码操作。该项目的一部分是将属性注入(inject)到 TypeDefinitions 中,使用 Property
我正在使用 JB Evain 的 Mono.Cecil 对已编译的 DLL 执行一些字节码操作。该项目的一部分是将属性注入(inject)到 TypeDefinitions 中,使用 Property
考虑以下 PowerShell 片段: $csharpString = @" using System; public sealed class MyClass { public MyClas
我正在尝试从 .NET 类型获取 Mono.Cecil TypeDefinition,但没有成功。 我正在使用这样的代码: var type = typeof(MarkdownMonster.AppC
我有一个在 powershell 中用内联 C# 定义的类: Add-Type -TypeDefinition @" public class SomeClass { stri
在我现有的项目中,我们已经在使用 React v0.14.7。我刚刚使用 npm: npm install --save react@0.14.7 react-dom@0.14.7 @types/re
我是一名优秀的程序员,十分优秀!