Marshal.GenerateGuidForType(Type)和Type.GUID有什么区别?输入classType=typeof(SomeClass);boolequal=Marshal.GenerateGuidForType(classType)==classType.GUID;我还没有找到一个失败的案例。那么为什么以及何时应该使用Marshal方法而不是简单地获取GUID属性呢?请参阅http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.generateguidfortype.aspx...GenerateGuidForType提供与Type.GUID属性相同的功能。因此,根据文档,它们是相同的。但是,Marshal.GenerateGuidForType仅适用于RuntimeType对象,而Type.GUID还适用于其他一些Type实现。例如:使用系统;使用System.CodeDom;使用System.Runtime.InteropServices;使用System.Workflow.ComponentModel.Compiler;namespaceSamples{classProgram{staticCodeCompileUnitBuildHelloWorldGraph(){varcompileUnit=newCodeCompileUnit();varsamples=newCodeNamespace("示例");compileUnit.Namespaces.Add(示例);varclass1=newCodeTypeDeclaration("Class1");示例.Types.Add(class1);返回编译单元;}staticvoidMain(string[]args){varunit=BuildHelloWorldGraph();vartypeProvider=newTypeProvider(null);typeProvider.AddCodeCompileUnit(单元);vart=typeProvider.GetType("Samples.Class1");控制台.WriteLine(t.GUID);//打印设计时类型实例的GUID。Console.WriteLine(Marshal.GenerateGuidForType(t));//抛出参数异常。}}}使用系统;使用System.CodeDom;使用System.Runtime.InteropServices;使用System.Workflow.ComponentModel.Compiler;命名空间示例{类程序{静态CodeCompileUnitBuildHelloWorldGraph(){varcompileUnit=newCodeCompileUnit();varsamples=newCodeNamespace("示例");compileUnit.Namespaces.Add(示例);varclass1=newCodeTypeDeclaration("Class1");示例.Types.Add(class1);返回编译单元;}staticvoidMain(string[]args){varunit=BuildHelloWorldGraph();vartypeProvider=newTypeProvider(null);typeProvider.AddCodeCompileUnit(单元);vart=typeProvider.GetType("Samples.Class1");控制台.WriteLine(t.GUID);//打印设计时类型实例的GUID。Console.WriteLine(Marshal.GenerateGuidForType(t));//抛出参数异常。}}}根据MSDN,“GenerateGuidForType提供相同的Type.GUID属性”应该可以安全地使用最适合您的那个。以上就是C#学习教程:Marshal.GenerateGuidForType(Type)和Type.GUID有什么区别?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
