2012-04-19 2 views
0

У меня есть веб-сайт в моем решении и проект класса Data
класс данные ссылки на сайт
Теперь я хочу переопределить метод а из класса данных на веб-сайте
я думаю, что это возможно, потому что после компиляции класса данных является длл на веб-сайтеметод коррекции из другого проекта

мой класс данных:

public partial class forInherit 
{ 
    public virtual int getUserID() 
    { 
     return 0; 
    } 
} 

public partial class logFunctions : forInherit 
{ 
} 

и мой веб-сайт:

public partial class logFunctions 
{ 
    public override int getUserID() 
    { 
    } 
} 

но моя ошибка

не подходящий метод нашел переопределить

+2

Partial используется для разделения между исходными файлами, а не между проектами – Jodrell

ответ

2

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

Если я правильно понимаю ваше намерение, вы хотите дать потребителям ваших классов данных возможность изменить поведение метода getUserID(), продолжая использовать класс logFunctions из вашего проекта класса данных.

Вы можете достичь этого несколькими способами, одним очень простым было бы дать logFunctions делегат, который вызывается, когда вызывается getUserID(). Другая возможность - ввести интерфейс, который передается в logFunctions.

Пример для первого варианта:

В вашем проекте данных:

public class forInherit 
{ 
    public virtual int getUserID() 
    { 
     return 0; 
    } 
} 

public class logFunctions : forInherit 
{ 
    public Func<int> GetUserIDDelegate { get; set; } 

    public override int getUserID() 
    { 
     if(GetUserIDDelegate == null) 
      return 0; 
     return GetUserIDDelegate(); 
    } 
} 

В вашем веб-проекта:

logFunctionsInstance.GetUserIDDelegate =() => { return 1; }; 
+0

Я хочу использовать значение свойства на своем веб-сайте для моего класса данных. Indeed Я не могу получить доступ к этому свойству в моем классе данных. Так что я хочу, чтобы он переопределялся в веб-сайт, чтобы вернуть значение свойства – Mehdi

+0

@Mehdi: Это возможно с помощью подхода, который я вам показал. –

0

logFunction класс в вашем веб-сайте должно наследовать forInherit класс в вашем проекте класса данных.

Пока оба класса logFunction являются partial, они находятся в разных проектах и, вероятно, пространствах имен (вы не укажете.) Таким образом, оба они связаны только по имени, а не по компилятору.