Question

Je lis ce livre sur C # et .NET et je suis apprendre un tas de trucs cool. J'ai lu la partie où l'auteur parle de chargement dynamique un assemblage et la création d'une instance d'un type dans cette assemblée.

Dans AS3, il est possible de faire le même genre de choses, sauf pour une chose: vous pouvez demander au compilateur de ne pas compiler un ensemble de classe, mais pour vérifier la sécurité de type. Voici un exemple:

//Defined in an external library
public class A {...}


//In my application, I tell the compiler to type check A, but not compile it
var a:A = new A();
a.whatever();

Lors de l'exécution dans mon code d'application, je peux charger dynamiquement ma bibliothèque externe contenant la définition de la classe A, charger ces définitions dans ApplicationDomain de mon application et tout fonctionnera bien. Aucun besoin de réflexion!

Est-ce possible en C #?

En d'autres termes, puis-je demander au compilateur C # pour typer contre un groupe de classe (disons, dans une bibliothèque), mais les exclure de la compilation?

Était-ce utile?

La solution

Je viens de lire

Action Script est un langage dynamique, il offre comme un « bonus » une fonction de vérification de type, il vous aide à trouver les bogues au moment de la compilation, comme les langages typés statiques font.

C # est un langage statique typé, il fait tout son type de vérification au moment de la compilation. Le contrôle de type est pas c'est une caractéristique intégrale « bonus ». C # a toujours eu la capacité à se lier fin en utilisant la réflexion et la fonction est de mieux avec le nouveau mot-clé à venir dynamique.

Toutefois, si vous utilisez l'une des caractéristiques liaison tardive que C # a, vous obtenez aucune vérification de type.

Autres conseils

Je ne suis pas 100% clair sur ce que le code AS3 fait - mais il semble que vous voulez définir une interface commune (dans une dll séparée) que votre montage externe peut mettre en œuvre - et simplement jeter lorsque vous créez la objet:

Type type = loadedAssembly.GetType(fullyQualifiedName);
IMyInterface obj = (IMyInterface)Activator.CreateInstance(type):

vous pouvez maintenant utiliser les méthodes définies sur obj facilement.

Sinon, la version 4.0 C # le mot-clé dynamic fournit canard frappe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top