Мне очень трудно найти ответ на вопрос ниже, о наследовании и ООП.Может ли кто-нибудь помочь, пожалуйста?
Вот вопрос:
Давайте предположим, что у меня есть класс с именем ServiceManager
внутри сборки с именем KioskFramework
, который реализует 2 различных интерфейса с именами IServiceManager
и IServiceProvider
.
public interface IServiceManager
{
string SerialNumber { get; }
string Description { get; set; }
int DoFoo(IServiceManager instance, int a, int b);
}
public interface IServiceProvider
{
void DoSomethingRESTRICTED();
}
class ServiceManager : IServiceManager, IServiceProvider
{
public void DoSomethingRESTRICTED();
… // some other properties and methods...
public string SerialNumber { get { … } }
public string Description { get { … } set { … } }
public int DoFoo(int a, int b)
{
…
}
}
У меня есть другой класс с именем MonitoringService
внутри сборки с именем KioskFramework.MonitoringService
, который использует определенные свойства класса ServiceManager
(те, которые определены в IServiceManager
).
class MonitoringService
{
… // some other properties and methods...
public int DoBar(IServiceManager instance, int a, int b)
{
// an example to show that I need access to ServiceManager's properties
return instance.SerialNumber.Length +
instance.Description.Length +
instance.DooFoo(a, b);
}
}
Все, что я хочу сделать, - это чтобы я мог использовать определенные свойства в MonitoringService
, но не в другом классе или сборке (например, ControllingService
внутри * 1031).*), может получить доступ к этим свойствам.
class ControllingService
{
public void DoSomethingElse(IServiceProvider instance)
{
// this method should not have access to the IServiceManager's
// properties and methods, even if it has an instance of
// IServiceProvider, or even if it has referenced the assembly
// containing IServiceManager interface
}
}
Возможно ли это?Как?Есть ли шаблон для решения этой проблемы?
Может быть, я не так думаю, но моя цель - ограничить определенных членов класса, чтобы их можно было видеть / использовать только в определенных сборках, но не всех.
edit: После ответа Марка Сайдада я отредактировал это сообщение, сказав, что не хочу показывать другие внутренние элементы и классы сборки "KioskFramework" сборке "KioskFramework.MonitoringService".
Заранее спасибо.