Sree(Member 12916318) Ответов: 1

Разве я не могу наследовать класс веб-страницы от другого класса?


Я объявил одну веб-страницу. там я определил все методы. Теперь я разделил классы, чтобы сделать тестирование легким. Я объявил еще один класс репозитория для выполнения операций crud. Вместо того чтобы определить один из всех методов класса web page еще раз в
repository class. Is that possible? it is working fine for me. But , I have a doubt here? Can you please somebody help me on this?

What I have tried:

Webpage class:
public partial class MSNBulkImport : System.Web.UI.Page
{

private IFactoryForMSN moqobj = null;

        public MSNBulkImport()
        {

        }

        public MSNBulkImport(IFactoryForMSN moqobj)
        {
            this.moqobj = moqobj;
        }

//Save the data in database.
        public bool InsertBulkImportPortfolios(MSNBulkImportPortfolioTVP mSNBulkImportPortfolioTVP, string updatedBy)
        {
            MSNRepository mSNRepository = new MSNRepository();
            return mSNRepository.InsertBulkImportPortfoliosToDatabase(mSNBulkImportPortfolioTVP, updatedBy);
        }
}

Interface:

<pre>public interface IFactoryForMSN
    {
        
        bool InsertBulkImportPortfoliosToDatabase(MSNBulkImportPortfolioTVP mSNBulkImportPortfolioTVP, string updatedBy);
    }

Repository Class:
Here i am inheriting the webpage. Is that correct? 

public class MSNRepository : MSNBulkImport,IFactoryForMSN 
    {
}

1 Ответов

Рейтинг:
4

#realJSOP

Да, но класс, от которого вы наследуете, должен быть в конечном счете производным от System.Web.UI.Page.

РЕДАКТИРОВАТЬ==================================

Мне кажется я вижу, что вы хотите. Вам не нужен интерфейс. Все, что вам нужно сделать, это сделать все методы в вашем базовом классе виртуальными, чтобы вы могли переопределить их в производных классах. См. полужирный/курсивный/подчеркнутый текст.

public partial class MSNBulkImport : System.Web.UI.Page
{
    private IFactoryForMSN moqobj = null;

    public MSNBulkImport()
    {
    }

    public MSNBulkImport(IFactoryForMSN moqobj)
    {
        this.moqobj = moqobj;
    }

    //Save the data in database.
    public virtual bool InsertBulkImportPortfolios(MSNBulkImportPortfolioTVP tvp, string updatedBy)
    {
        MSNRepository mSNRepository = new MSNRepository();
        return mSNRepository.InsertBulkImportPortfoliosToDatabase(tvp, updatedBy);
    }
}

//Repository Class:
public class MSNRepository : MSNBulkImport
{
    public override bool InsertBulkImportPortfolios(MSNBulkImportPortfolioTVP tvp, string updatedBy)
}


Sree(Member 12916318)

Ну ладно.Спасибо за предложение. Повлияет ли это на какие-либо проблемы с производительностью первой страницы(MSNBulkImport)? Правильно ли это делать?

#realJSOP

Он не должен отличаться от прямого наследования от класса, указанного выше.

Sree(Member 12916318)

Спасибо за это. Это я понял. Моя проблема заключается в том, что у меня есть некоторые методы на веб-странице msnbulkimport, которая наследуется от класса page. Что мне нужно использовать в классе MSN repository для выполнения операций crud с помощью наследования, как я уже сказал.Опять же мне нужен этот метод в классе msnbulkimport. Не могли бы вы объяснить мне, пожалуйста.

#realJSOP

Я понятия не имею, что вы хотите прояснить. Ты просто говоришь о наследстве. До тех пор, пока методы являются общедоступными или защищенными, и класс, который наследует ваш класс (apprently, msnbulkimport), может использовать эти методы. Это не то же самое, что "должен использовать".

Sree(Member 12916318)

Я говорю только о наследстве. Вместо того чтобы воссоздавать методы в репозитории msn, которые я объявил в классе page(msnbulkimport), я наследую msnbulkimport. Разве мы не можем наследовать класс page(aspx page in clear) в другом классе? Вот и хочу уточнить. Понял. Спасибо.

#realJSOP

Я изменил свой ответ.