Maison > développement back-end > C++ > Les types anonymes peuvent-ils implémenter des interfaces en C# ?

Les types anonymes peuvent-ils implémenter des interfaces en C# ?

Mary-Kate Olsen
Libérer: 2025-01-13 17:56:43
original
152 Les gens l'ont consulté

Can Anonymous Types Implement Interfaces in C#?

Discussion sur l'implémentation d'interfaces par classes anonymes

L'exemple de code suivant semble impliquer que les types anonymes peuvent implémenter des interfaces :

<code class="language-csharp">public interface DummyInterface
{
    string A { get; }
    string B { get; }
}

public class DummySource
{
    public string A { get; set; }
    public string C { get; set; }
    public string D { get; set; }
}

public class Test
{
    public void WillThisWork()
    {
        var source = new DummySource[0];
        var values = from value in source
                     select new
                     {
                         A = value.A,
                         B = value.C + "_" + value.D
                     };

        DoSomethingWithDummyInterface(values);
    }

    public void DoSomethingWithDummyInterface(IEnumerable<DummyInterface> values)
    {
        foreach (var value in values)
        {
            Console.WriteLine("A = '{0}', B = '{1}'", value.A, value.B);
        }
    }
}</code>
Copier après la connexion

Cependant, il convient de noter que les types anonymes ne peuvent pas implémenter des interfaces. Le guide de programmation C# indique clairement :

<code>匿名类型是包含一个或多个公共只读属性的类类型。不允许使用其他类型的类成员,例如方法或事件。匿名类型不能转换为除 object 之外的任何接口或类型。</code>
Copier après la connexion

Par conséquent, l'exemple de code fourni ne sera pas compilé car le type anonyme dans l'expression de sélection ne peut pas être converti en type DummyInterface.

Une autre façon d'implémenter une interface utilisant des types anonymes consiste à utiliser des types dynamiques, comme décrit dans l'article « Dynamic Interface Wrapping ». Cela implique de créer un objet dynamique qui implémente l'interface requise et d'y envelopper le type anonyme. Cependant, cette approche présente des limites car le typage dynamique peut introduire une surcharge de performances et est plus difficile à déboguer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal