如果我声明这样的数据类型:
position:relative
然后创建一个对象并获取其数据类型,我得到 position: absolute;
right: 10px;
float: none;
,正如我所期望的那样:
Add-Type -TypeDefinition "public class MyTest {}"
但如果我直接提到这个类型......
MyTest
我得到(new-object MyTest).GetType().Name
。谁能解释一下这里发生了什么?
答案 0 :(得分:4)
这与Add-Type
cmdlet无关;它适用于所有PowerShell类型:
PS > (1).GetType().Name
Int32
PS > [int].GetType().Name
RuntimeType
(new-object MyTest)
和1
之类的内容是特定类型的实例。在它们上调用.GetType()
将返回这些实例的类型。
[MyTest]
和[int]
之类的内容是RuntimeType
类的实例,它代表所有PowerShell运行时类型([...]
中的内容)。这就是[MyTest].GetType().Name
返回RuntimeType
的原因。您基本上是获取MyTest
类本身的类型,而不是其实例。
以下是视觉细分:
new-object MyTest # MyTest instance
[MyTest] # RuntimeType instance
1 # Integer instance
[int] # RuntimeType instance