Вы можете использовать интерфейс для решения этой проблемы. Предположим, IHardware
- это интерфейс, задайте все функции, которые вам требуются от видеокамеры и т. Д. Здесь. Теперь реализуйте этот интерфейс в отдельной библиотеке классов. Эта библиотека будет обрабатывать все вызовы вашего аппаратного кода. Скажи, что это WorkLibrary
. Теперь в форме вы будете использовать этот интерфейс для совершения звонков на ваш WorkLibrary
.
Интерфейс
interface IHardware
{
void Load(); //Example
}
Библиотека классов
class WorkClass : IHardware
{
public void Load()
{
}
}
Внутри вашей формы, для вызова Load
метода, вы сделаете
//Fully Qualified name of the WorkClass, you can store this in config file also
string provider = "WorkLibrary.WorkClass, WorkLibrary";
IHardware hardWare = Activator.CreateInstance(Type.GetType(provider, true));
hardWare.Load();
При таком подходе вам не нужно ссылаться на WorkLibrary.dll
в вашем проекте формы, вам просто нужно поместить его в папку debug
или release
.
Таким образом, вы можете полностью отделить ваши аппаратные вещи.
Большим преимуществом этого может быть
- Вы можете написать разные библиотеки для разного оборудования.
- Вы можете протестировать эти библиотеки независимо от потребителя.
Надеюсь, это поможет вам.