Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 688933
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T02:16:50+00:00 2026-05-14T02:16:50+00:00

Updated question given Andrew Hare’s correct answer: Given the following C# classes: public class

  • 0

Updated question given Andrew Hare’s correct answer:

Given the following C# classes:

public class Bar : Foo, IDisposable
{
    // implementation of Bar and IDisposable
}

public class Foo : IEnumerable<int>
{
    // implementation of Foo and all its inherited interfaces
}

I want a method like the following that doesn’t fail on the assertions (Note: you cannot change the assertions):

public void SomeMethod()
{
   // This doesn't work
   Type[] interfaces = typeof(Bar).GetInterfaces();

   Debug.Assert(interfaces != null);
   Debug.Assert(interfaces.Length == 1);
   Debug.Assert(interfaces[0] == typeof(IDisposable));
}

Can someone help by fixing this method so the assertions don’t fail?

Calling typeof(Bar).GetInterfaces() doesn’t work because it returns the entire interface hierarchy (i.e. interfaces variable contains IEnumerable<int>, IEnumerable, and IDisposable), not just the top level.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T02:16:50+00:00Added an answer on May 14, 2026 at 2:16 am

    Try this:

    using System.Linq;    
    public static class Extensions
    {
        public static Type[] GetTopLevelInterfaces(this Type t)
        {
            Type[] allInterfaces = t.GetInterfaces();
            var selection = allInterfaces
                .Where(x => !allInterfaces.Any(y => y.GetInterfaces().Contains(x)))
                .Except(t.BaseType.GetInterfaces());
            return selection.ToArray();
        }
    }
    

    usage:

        private void Check(Type t, Type i)
        {
            var interfaces = t.GetTopLevelInterfaces();
    
            Debug.Assert(interfaces != null, "interfaces is null");
            Debug.Assert(interfaces.Length == 1, "length is not 1");
            Debug.Assert(interfaces[0] == i, "the expected interface was not found");
    
            System.Console.WriteLine("\n{0}", t.ToString());
            foreach (var intf in  interfaces)
                System.Console.WriteLine("  " + intf.ToString());
    
        }
    
        public void Run()
        {
            Check(typeof(Foo), typeof(IEnumerable<int>));
            Check(typeof(Bar), typeof(IDisposable));
        }
    

    As noted elsewhere, this only works if the checked type explicitly implements a single interface. If you have more than one, then you need to change your Assert.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've stumbled in a tricky python question. Given ( updated ): class A(object): def
UPDATED QUESTION Since the ctor is not supported by .NETCF (public FileStream(IntPtr handle, FileAccess
Updated question: Django is giving me the following sql query: SELECT auth_user.id, auth_user.username, auth_user.first_name,
Given the following two interfaces (these are small examples, not my actual implementation): public
Updated 10/21: Changed title and question in order to possibly get an answer (other
Updated question, see below I'm starting a new project and I would like to
UPDATED QUESTION: Ok, I am going to simplify my question since I don't really
Updated Question: $(this).attr(EmployeeId, 'A42345'); $.ajax({ type: POST, url: url, data: {EmployeeId: ' + id
Edit (updated question) I have a simple C program: // it is not important
ORIGINAL (see UPDATED QUESTION below) I am designing a new laboratory database that tests

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.