2011-01-27 82 views

回答

5

看到http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.generateguidfortype.aspx

... GenerateGuidForType提供相同的功能的Type.GUID財產。

所以根據文檔他們是一樣的。但是,Marshal.GenerateGuidForType僅適用於RuntimeType對象,而Type.GUID也適用於其他類型的實現。

例如爲:

 

using System; 
using System.CodeDom; 
using System.Runtime.InteropServices; 
using System.Workflow.ComponentModel.Compiler; 

namespace Samples 
{ 
    class Program 
    { 
     static CodeCompileUnit BuildHelloWorldGraph() 
     { 
      var compileUnit = new CodeCompileUnit(); 
      var samples = new CodeNamespace("Samples"); 
      compileUnit.Namespaces.Add(samples); 

      var class1 = new CodeTypeDeclaration("Class1"); 
      samples.Types.Add(class1); 

      return compileUnit; 
     } 


     static void Main(string[] args) 
     { 
      var unit = BuildHelloWorldGraph(); 
      var typeProvider = new TypeProvider(null); 
      typeProvider.AddCodeCompileUnit(unit); 
      var t = typeProvider.GetType("Samples.Class1"); 
      Console.WriteLine(t.GUID); // prints GUID for design time type instance. 
      Console.WriteLine(Marshal.GenerateGuidForType(t)); // throws ArgumentException. 
     } 
    } 
} 
 
2

根據MSDN,「GenerateGuidForType提供了與Type.GUID屬性」相同的功能。使用最適合你的應該是安全的。

相關問題