.Net - How to create a UserControl that implements an interface? Error with LoadControl

I have several UserControls that I want each of them to have some basic functions. Below is my implementation:

public interface IMyTabInterface
{
    void LoadData();
}

public partial class MyFirstTab : System.Web.UI.UserControl, IMyTabInterface
{
    public void LoadData()
    {
        ...
    }

}

Then, in another page code, I try:

    protected void LoadFirstTab()
    {
        Control uControl1 = Page.LoadControl("/Controls/MyFirstTab.ascx");
        Control uControl2 = Page.LoadControl("/Controls/MySecondTab.ascx");

        // Want to do something like this, but don't get this far... :
        var myFirstTab = (IMyTabInterface)uControl1;
        var mySecondTab = (IMyTabInterface)uControl2;

        myFirstTab.LoadData();
        mySecondTab.LoadData();

        Panel1.Controls.Add(myFirstTab);
        Panel1.Controls.Add(mySecondTab);
    }

I know that a lot of this is still wrong, but I get an error in the LoadControl () line:

"MyFirstTab" is not allowed here because it does not extend the "System.Web.UI.UserControl" class

although the class explicitly extends the UserControl class. What's going on here? Is there a better way to do this?

+3
source share
1 answer

This will work:

var myFirstTab = (IMyTabInterface)uControl1;
var mySecondTab = (IMyTabInterface)uControl2;

myFirstTab.LoadData();
mySecondTab.LoadData();

Panel1.Controls.Add((Control)myFirstTab);
Panel1.Controls.Add((Control)mySecondTab);

What's happening?

myFirstTab mySecondTab IMyTabInterface, , ( LoadData ).

, , Control ( , ) - .


:

var myFirstTab = (IMyTabInterface)uControl1;
var mySecondTab = (IMyTabInterface)uControl2;

myFirstTab.LoadData();
mySecondTab.LoadData();

Panel1.Controls.Add(uControl1);
Panel1.Controls.Add(uControl2);

Control, , .

+5

Source: https://habr.com/ru/post/1790047/


All Articles