Type classType = typeof(SomeClass);
bool equal = Marshal.GenerateGuidForType(classType) == classType.GUID;
我還沒有找到失敗這種情況的情況。Marshal.GenerateGuidForType(Type)和Type.GUID有什麼區別?
因此爲什麼和什麼時候我應該使用Marshal
方法而不是簡單地獲取GUID
屬性?
Type classType = typeof(SomeClass);
bool equal = Marshal.GenerateGuidForType(classType) == classType.GUID;
我還沒有找到失敗這種情況的情況。Marshal.GenerateGuidForType(Type)和Type.GUID有什麼區別?
因此爲什麼和什麼時候我應該使用Marshal
方法而不是簡單地獲取GUID
屬性?
... 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.
}
}
}
根據MSDN,「GenerateGuidForType提供了與Type.GUID屬性」相同的功能。使用最適合你的應該是安全的。