C# 获取字符串";System.Collections.ObjectModel.ObservableCollection“;来自包含泛型ObservableCollection的类型(System.Type)?
我得到了一个全名为的类型(如果有帮助): 从该类型中,我希望将“System.Collections.ObjectModel.ObservableCollection”作为一个字符串,但我希望“干净地”执行它,这意味着不使用字符拆分字符串。 我认为策略是获得一个类型或其他类型的东西,其全名为“System.Collections.ObjectModel.ObservableCollection”,但我确实没有做到://真正的“类型”名称不是C# 获取字符串";System.Collections.ObjectModel.ObservableCollection“;来自包含泛型ObservableCollection的类型(System.Type)?,c#,observablecollection,C#,Observablecollection,我得到了一个全名为的类型(如果有帮助): 从该类型中,我希望将“System.Collections.ObjectModel.ObservableCollection”作为一个字符串,但我希望“干净地”执行它,这意味着不使用字符拆分字符串。 我认为策略是获得一个类型或其他类型的东西,其全名为“System.Collections.ObjectModel.ObservableCollection”,但我确实没有做到://真正的“类型”名称不是System.Collections.ObjectMod
System.Collections.ObjectModel.ObservableCollection
,正如VirtualBlackBox正确提到的那样,它是System.Collections.ObjectModel.ObservableCollection`1
(因为它是泛型类型,`1
表示泛型参数的数量)
通过使用type.Name
(givesobservetecollection`1
)和type.Namespace
(givesSystem.Collections.ObjectModel
)可以非常接近
并不是说您的类型很可能不是泛型类型,而是它的规范带有泛型参数=string
您可以使用获取参数类型(string
)。真正的“类型”名称不是System.Collections.ObjectModel.ObservableCollection
,而是System.Collections.ObjectModel.ObservableCollection`1
,正如VirtualBlackFox正确提到的那样(因为它是泛型类型,`1
表示泛型参数的数量)
通过使用type.Name
(givesobservetecollection`1
)和type.Namespace
(givesSystem.Collections.ObjectModel
)可以非常接近
并不是说您的类型很可能不是泛型类型,而是它的规范带有泛型参数=string
您可以使用。来获得参数类型(字符串,在您的情况下)
只是为了补充Vlad的答案,不接受我的答案
`
字符直接在CLI()规范中指定,因此解析它是安全且“干净的”(只要您的C#代码在CLI基础结构下运行):
10.7.2:
符合CLS的泛型类型名称使用以下格式进行编码
“名称[`arity]”
,其中[…]表示坟墓
重音字符“`
和arity一起是可选的。
编码名称应遵循以下规则:
“`
字符的ID(见分区II)`
字符直接在CLI()规范中指定,因此解析它是安全且“干净的”(只要您的C#代码在CLI基础结构下运行):
10.7.2:
符合CLS的泛型类型名称使用以下格式进行编码
“名称[`arity]”
,其中[…]表示坟墓
重音字符“`
和arity一起是可选的。
编码名称应遵循以下规则:
“`
字符的ID(见分区II)编译后的IL级别没有名为
System.Collections.ObjectModel.ObservableCollection
的类型,它的名称是System.Collections.ObjectModel.ObservableCollection`1
和System.type
表示在IL级别可见的类型,而不是特定语言(在本例中为C#)表示它。即使对于C#,当类型打开时(无类型参数),它也被命名为System.Collections.ObjectModel.ObservableCollection
编译后的IL级别没有名为System.Collections.ObjectModel.ObservableCollection
的类型,它的名称是System.Collections.ObjectModel.ObservableCollection`1
和System.type
表示在IL级别可见的类型,而不是特定语言(在本例中为C#)表示它。即使对于C#,当类型打开时(无类型参数),它也被命名为System.Collections.ObjectModel.ObservableCollection
因此,考虑“作为一个特殊的字符在这样的问题上真的很烦人,不是吗?@VirtualBlackBox:是的,但我刚刚找到了一个解决方案:使用双倒勾:-Pnice我使用了html代码块和倒勾字符代码,但双倒勾更干净(如果不是更可读的话)。还添加了一个答案,带有定义它的规范中的点。@VirtualBlackBox:我尝试了html&x60;
,但在“内联”反勾选的代码中似乎失败了。是的,需要直接使用html
标记,字符代码才能工作:&96;
与&96;
(但它在评论中不起作用,因为即使是过滤过的html也是被禁止的)所以考虑“作为一个特殊字符在这样的问题上真的很烦人,不是吗?@VirtualBlackBox:是的,但我刚刚找到了一个解决方案:使用双反勾:-Pnice我使用了html代码块和反勾字符代码,但双反勾更干净(如果不是真的更可读的话)。还添加了一个带有定义它的规范中的点的答案。@VirtualBlackBox:我尝试了html`;
,但在“内联”反勾选代码中似乎失败了。是的,需要将html
标记直接用于字符
"System.Collections.ObjectModel.ObservableCollection`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"