SemanticResultValue Classe

Definizione

Rappresenta un valore semantico e facoltativamente associa il valore a un componente di una grammatica di riconoscimento vocale.

public class SemanticResultValue
Ereditarietà
SemanticResultValue

Esempio

Nell'esempio seguente viene restituito un Grammar oggetto che riconosce il comando "Set/Change/Alter Foreground/Background ... [elenco colori]". SemanticResultValuee le istanze (insieme a Choices e GrammarBuilderSemanticResultKey oggetti) vengono usate per definire la semantica che può essere analizzata sul riconoscimento. La semantica analizzata determina quale colore è stato richiesto e se è necessario modificare il primo piano o lo sfondo.

private Grammar FgBgColorGrammar()
{
  Grammar grammar = null;

  // Allow the command to begin with set, alter, change.
  Choices introChoices = new Choices();
  foreach (string introString in new string[] { "Change", "Set", "Alter" })
  {
    GrammarBuilder introGB = new GrammarBuilder(introString);
    introChoices.Add(new SemanticResultValue(introGB, String.Format("Command: {0}", introString)));
  }

  GrammarBuilder cmdIntro = new GrammarBuilder(introChoices);

  // Define the arguments for the command to select foreground or background
  // and to change their color as semantic values.
  Choices fgOrbgChoice = new Choices();
  GrammarBuilder backgroundGB=new GrammarBuilder("background");
  backgroundGB.Append(new SemanticResultValue(true));
  fgOrbgChoice.Add(backgroundGB);
  fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground", false));
  SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgBool", fgOrbgChoice);
  Choices colorChoice = new Choices();
  foreach (string colorName in System.Enum.GetNames(typeof(KnownColor)))
  {

    // Use implicit conversion of SemanticResultValue to GrammarBuilder.
    colorChoice.Add(
        (GrammarBuilder) (new SemanticResultValue(colorName, (Color.FromName(colorName)).Name)));
  }

  // Create a GrammarBuilder for CmdArgs to be appended to CmdIntro using
  // semantic keys.
  GrammarBuilder cmdArgs = new GrammarBuilder();
  cmdArgs.Append(new SemanticResultKey("BgOrFgBool", fgOrbgChoice));
  cmdArgs.AppendWildcard();
  cmdArgs.Append(new SemanticResultKey("colorStringList", colorChoice));

  GrammarBuilder cmds =
      GrammarBuilder.Add(
                       cmdIntro,
                       new GrammarBuilder(new SemanticResultKey("Cmd Args", cmdArgs)));
  grammar = new Grammar(cmds);
  grammar.Name = "Tree [Set,change,alter] [foreground,background] * color";
  return grammar;
}

Commenti

L'uso di SemanticResultValue e oggetti, insieme a GrammarBuilder e SemanticResultKeyChoices, è il modo più semplice per progettare una struttura semantica per un Grammaroggetto . Le informazioni semantiche per una frase vengono accessibili ottenendo un'istanza di SemanticValue, tramite la Semantics proprietà su RecognizedPhrase.

Nota

I valori gestiti dagli oggetti sono definiti dalle SemanticResultValueObject istanze passate ai costruttori. Il tipo sottostante di questo Object oggetto deve essere bool, , intfloato string. Qualsiasi altro tipo impedirà la costruzione di un'istanza Grammar con .SemanticResultValue

L'uso tipico di un'istanza SemanticResultValue associa l'istanza a un componente riconoscibile di , Grammarad esempio una frase, una regola o un Choices oggetto. Se il componente associato viene usato come parte di un'operazione di riconoscimento, viene SemanticResultValue usato per definire un valore nella semantica della frase restituita.

Esistono due metodi di base per associare un'istanza a un SemanticResultValue elemento grammaticale, a seconda del costruttore usato per creare l'oggetto SemanticResultValue.

  • Se viene usato solo il valore (specificato da un'istanza di Object) per costruire un SemanticResultValue oggetto, l'oggetto SemanticResultValue è associato al componente grammaticale che lo ha preceduto, oltre a un GrammarBuilder oggetto.

    Ad esempio, nel frammento di codice seguente, se un'istanza Grammar costruita con questa GrammarBuilder istanza riconosce la parola "background", un valore di è impostato nella semantica della true frase riconosciuta.

    GrammarBuilder backgroundGB=new GrammarBuilder("background");
    backgroundGB.Append(new SemanticResultValue(true));
    

    Per altre informazioni, vedere la descrizione dell'oggetto SemanticResultValue(Object).

  • Se viene usata una frase di valore stringa o un'istanza specifica GrammarBuilder , insieme a un Object valore che specifica un SemanticResultValue valore, tale valore viene associato automaticamente alla frase del valore stringa o all'istanza GrammarBuilder . Se la frase o GrammarBuilder l'oggetto viene usato nel processo di riconoscimento, il valore verrà assegnato alla semantica della frase riconosciuta.

    Nell'esempio seguente viene illustrato questo oggetto ed è funzionalmente equivalente all'esempio precedente, che ha usato chiamate esplicite a Append e SemanticResultValue(Object). Se la logica di riconoscimento usa la parola "background", il valore true verrà aggiunto alla semantica riconosciuta.

    fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background", true));
    

    Per altre informazioni, vedere la descrizione di SemanticResultValue(GrammarBuilder, Object) e SemanticResultValue(String, Object).

Per essere usato da un Grammar oggetto in riconoscimento, tutte le SemanticResultValue istanze devono essere associate a uno degli SemanticValue oggetti usati da tale Grammar. Questa operazione viene eseguita associando una chiave semantica a .SemanticResultValue

Le chiavi semantiche possono essere collegate in modo esplicito a un SemanticResultValueoggetto usando un SemanticResultKey oggetto . SemanticResultValue le istanze non collegate in modo esplicito a una chiave vengono associate alla chiave radice del valore predefinito SemanticValue.

Dopo aver usato un SemanticResultValue oggetto per impostare Value, se è contrassegnato con la chiave radice predefinita o da qualsiasi particolare SemanticResultKey, tale valore non deve essere modificato o un'eccezione si verificherà durante le operazioni di riconoscimento.

Nell'esempio seguente verrà generata un'eccezione perché imposta e quindi modifica la radice Value di un Grammaroggetto .

GrammarBuilder gb=new GrammarBuilder();
gb.Append(new SemanticResultValue("One"));
gb.Append(new SemanticResultValue("Two"));

D'altra parte, il codice nell'esempio seguente è consentito. Anche se definisce più istanze di SemanticResultValue, sono incluse in un Choices oggetto e solo una verrà usata per impostare il valore della chiave bgOrfgText.

Choices fgOrbgChoice = new Choices();
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background"));
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground"));
SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgText", fgOrbgChoice);

Costruttori

SemanticResultValue(GrammarBuilder, Object)

Inizializza una nuova istanza della classe SemanticResultValue e associa un valore semantico a un oggetto GrammarBuilder.

SemanticResultValue(Object)

Inizializza una nuova istanza della classe SemanticResultValue e specifica un valore semantico.

SemanticResultValue(String, Object)

Inizializza una nuova istanza della classe SemanticResultValue e associa un valore semantico a un oggetto String.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToGrammarBuilder()

Restituisce un'istanza di GrammarBuilder costruita dall'istanza SemanticResultValue corrente.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Prodotto Versioni
.NET 8 (package-provided), 9 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 (package-provided), 4.7, 4.7.1 (package-provided), 4.7.1, 4.7.2 (package-provided), 4.7.2, 4.8 (package-provided), 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

Vedi anche