This is part of a series of questions which focuses on a project called the Abstraction Project, which aims to abstract the concepts used in language design in the form of a framework.
Another page associated to it related to ease of use can be viewed here. The meta-topic associated to an inquiry about the framework and the proper place to post can be found here.
Sto scrivendo un framework che descrive i concetti all'interno di linguaggi di alto livello statici (come C #, VB.NET, eccetera). Come parte di ciò, implica la sintesi delle strutture che descrivono questi concetti.
Una domanda che ho avuto riguardava quello che viene chiamato Structural Typing, che mirano a implementare attraverso i parametri di tipo (i costruttori con parametri sarebbero un'aggiunta definitiva). È un concetto che né C # né VB.NET implementano.
La domanda che ho oggi è: la tipizzazione strutturale è necessaria in un modello gerarchico?
Un piccolo esempio a cui posso pensare sono i modelli sviluppati che si basano su modelli, ma non hanno necessariamente un'interfaccia per specificare questo modello. Ciò è utile nei casi in cui si desidera utilizzare il codice per più tipi di base senza un antenato comune, ma con struttura simile.
Se si desidera visualizzare un elenco di elementi nella console tramite il loro nome, è necessario scrivere un metodo per l'antenato comune più basso che definisce tale proprietà del nome. Person, Control e Type utilizzano tutti metodi diversi, ad esempio.
Se implementato, il codice risultante sarebbe simile a:
public static void DisplayNames<T>(IEnumerable<T> namedItems)
where T has
{
///<summary>Returns the item's name</summary>
string Name { get; }
}
{
foreach (var namedItem in namedItems)
Console.WriteLine(namedItem.Name);
}
I '[' e ']' sono usati per motivi di disambiguazione (sarebbe difficile provare a discernere il corpo della struttura di un parametro di tipo dalla struttura di un'interfaccia altrimenti).
Suggerimenti benvenuti.