Certo, questo è un errore. È in buona compagnia, molte altre classi di mscorlib hanno lo stesso problema. Ad esempio Registro, Directory, File, Buffer, Ambiente, Nullable, Monitor, Timeout. Ma non coerentemente, l'attributo è stato correttamente omesso per BitConverter, Console, Convert, GC, Math, eccetera.
L'attributo è altrimenti importante per molte classi in mscorlib, gli host CLR personalizzati e i linguaggi di script dipendono da questo. Sembra che i programmatori Microsoft che hanno applicato l'attributo stessero semplicemente operando su pilota automatico. L'errore è irrilevante, Tlbexp sa come gestirlo. La coclasse ottiene l'attributo [noncreabile] in modo che i programmi client non possano creare un'istanza della classe. E le interfacce generate automaticamente sono vuote. Quindi il tipo non è semplicemente utilizzabile e non è possibile utilizzarlo accidentalmente.
Se in realtà desidera utilizzare System.IO.Path da un programma client COM, è necessario scrivere una classe wrapper [ComVisible] per esso. Naturalmente, non statico, ogni metodo che scrivi può semplicemente delegare direttamente a uno dei metodi Path. Vorresti l'attributo [appobject] sulla coclasse in modo che si comporti staticamente in un programma client che supporta l'attributo, purtroppo .NET non ha un attributo per questo.
fonte
2015-06-02 09:21:26
Vale anche la pena notare che non ha attributo 'Guid' che molto probabilmente significa che l'ID di classe verrà rigenerato ogni volta che viene compilato. – sharptooth