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 52847
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T16:58:15+00:00 2026-05-10T16:58:15+00:00

I have the following VB.net interface that I need to port to C#. C#

  • 0

I have the following VB.net interface that I need to port to C#. C# does not allow enumerations in interfaces. How can I port this without changing code that uses this interface?

Public Interface MyInterface      Enum MyEnum         Yes = 0         No = 1         Maybe = 2     End Enum      ReadOnly Property Number() As MyEnum  End Interface 
  • 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. 2026-05-10T16:58:16+00:00Added an answer on May 10, 2026 at 4:58 pm

    In short, you can’t change that interface without breaking code, because C# can’t nest types in interfaces. When you implement the VB.NET versions’s interface, you are specifying that Number will return a type of MyInterface.MyEnum:

    class TestClass3 : TestInterfaces.MyInterface {      TestInterfaces.MyInterface.MyEnum TestInterfaces.MyInterface.Number     {         get { throw new Exception('The method or operation is not implemented.'); }     }  } 

    However, since C# can’t nest types inside interfaces, if you break the enumerator out of the interface, you will be returning a different data type: in this case, MyEnum.

    class TestClass2 : IMyInterface {      MyEnum IMyInterface.Number     {         get { throw new Exception('The method or operation is not implemented.'); }     }  } 

    Think about it using the fully qualified type name. In the VB.NET interface, you have a return type of

    MyProject.MyInterface.MyEnum

    In the C# interface, you have:

    MyProject.MyEnum.

    Unfortunately, code that implements the VB.NET interface would have to be changed to support the fact that the type returned by MyInterface.Number has changed.

    IL supports nesting types inside interfaces, so it’s a mystery why C# doesn’t:

    .class public interface abstract auto ansi MyInterface 

    { .property instance valuetype TestInterfaces.MyInterface/MyEnum Number { .get instance valuetype TestInterfaces.MyInterface/MyEnum TestInterfaces.MyInterface::get_Number() }

    .class auto ansi sealed nested public MyEnum     extends [mscorlib]System.Enum 

    { .field public static literal valuetype TestInterfaces.MyInterface/MyEnum Maybe = int32(2)

        .field public static literal valuetype TestInterfaces.MyInterface/MyEnum No = int32(1)      .field public specialname rtspecialname int32 value__      .field public static literal valuetype TestInterfaces.MyInterface/MyEnum Yes = int32(0)  } 

    }

    If you have lots of code in other assemblies that make use of this interface, your best bet is to keep it inside a separate VB.NET assembly, and reference it from your C# projects. Otherwise, it’s safe to convert it, but you’ll have to change any code that uses it to return the different type.

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

Sidebar

Ask A Question

Stats

  • Questions 59k
  • Answers 59k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer Maybe you can do something with a [OnDeserializing] event? See… May 11, 2026 at 8:57 am
  • added an answer Can you add an overload? Have one signature without the… May 11, 2026 at 8:57 am
  • added an answer This answer supposes that the html input is a well-formed… May 11, 2026 at 8:57 am

Related Questions

I have the following VB.net interface that I need to port to C#. C#
I have the following in a program (written in VB.NET): Imports Microsoft.Office.Interop.Excel Public Class
I have the following tables in my database that have a many-to-many relationship, which
I have the following web config file. I am having some difficulty in retrieving
I have the following script. It replaces all instances of @lookFor with @replaceWith in
I have the following code in a web.config file of the default IIS site.
I have the following situation: I built an Access form with a subform (which
I have the following code: $bind = new COM(LDAP://CN=GroupName,OU=Groups,OU=Division,DC=company,DC=local); When I execute it from
I have the following code snippet. $items['A'] = Test; $items['B'] = Test; $items['C'] =
I have the following html.erb code that I'm looking to move to Haml: <span

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

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.