Qualcuno sa di una buona, solida, implementazione di C# come guida in dattiloscritto?Una classe Guid dattiloscritto?
Potrei farlo da solo ma ho pensato che avrei risparmiato il mio tempo se qualcun altro l'avesse fatto prima.
Grazie!
Qualcuno sa di una buona, solida, implementazione di C# come guida in dattiloscritto?Una classe Guid dattiloscritto?
Potrei farlo da solo ma ho pensato che avrei risparmiato il mio tempo se qualcun altro l'avesse fatto prima.
Grazie!
Esiste un'implementazione nel mio TypeScript utilities basata su generatori GUID JavaScript.
Ecco il codice:
class Guid {
static newGuid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
}
// Example of a bunch of GUIDs
for (var i = 0; i < 100; i++) {
var id = Guid.newGuid();
console.log(id);
}
Si prega di notare quanto segue:
C# GUID sono garantiti per essere unico. Questa soluzione è molto probabile che sia . C'è un enorme divario tra "molto probabile" e "garantito" e non si vuole cadere attraverso questa lacuna.
I GUID generati da JavaScript sono ottimi da utilizzare come una chiave temporanea che si utilizza in attesa che un server risponda, ma non mi fiderei necessariamente di loro come chiave primaria in un database. Se hai intenzione di fare affidamento su un GUID generato da JavaScript, sarei tentato di controllare un registro ogni volta che viene creato un GUID per assicurarti di non avere un duplicato (un problema che è emerso nel browser Chrome in alcuni casi).
Perché si sta generando con GUID il primo personaggio del 3 ° gruppo sempre '4'? –
@PaulGorbas Vedi https://en.wikipedia.org/wiki/Globally_unique_identifier - questo 4 indica un tipo di versione GUID. Il 4 indica che non sono basi di indirizzi MAC ma pseudo-casuali e potrebbero non essere crittograficamente sicure. – ZoolWay
"GUID C#" non sono più o meno unici di quelli prodotti dalla funzione. Una collisione è così estremamente improbabile che puoi fare affidamento sulla loro unicità. Ovviamente puoi usarlo come chiave primaria e controllare un registro non è utile. Tuttavia, questa implementazione non è crittograficamente sicura. Quindi i valori potrebbero essere prevedibili. Ma non è un problema di unicità. – R2C2
ho trovato questo https://typescriptbcl.codeplex.com/SourceControl/latest
qui è the Guid version hanno nel caso in cui il link non funziona più tardi.
module System {
export class Guid {
constructor (public guid: string) {
this._guid = guid;
}
private _guid: string;
public ToString(): string {
return this.guid;
}
// Static member
static MakeNew(): Guid {
var result: string;
var i: string;
var j: number;
result = "";
for (j = 0; j < 32; j++) {
if (j == 8 || j == 12 || j == 16 || j == 20)
result = result + '-';
i = Math.floor(Math.random() * 16).toString(16).toUpperCase();
result = result + i;
}
return new Guid(result);
}
}
}
Purtroppo questo non imposta i pattern di bit obbligatori per gli UUID casuali, la prima cifra nel terzo segmento deve essere 4, questo è il numero di versione UUID, e la prima cifra nel quarto segmento deve usare la maschera di bit 10xx, cioè solo il i valori 8, 9, A e B sono ammessi in quella posizione. Wiki URL: https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29 –
+1 per incollare nel codice sorgente, perché il collegamento a quel sito non ha più file dattiloscritto e file JS fanno l'host non sembra il codice che hai postato. –
@PaulGorbas lo fa. Ho aggiunto il link per completezza –
@ risposta di Briguy37 in [Stack Overflow:? Come creare un GUID/UUID in Javascript] (http://stackoverflow.com/a/8809472/2626313) è il mio preferito – xmojmr