Я думаю, что вы просите, это наследование нескольких классов, которое не разрешено в C #. (но может быть с C ++, который вы НЕ делаете).
Все остальные определили решение ИНТЕРФЕЙСА, и, вероятно, лучший путь. Однако, из вашего описания, у вас есть ОДИН БЛОК кода, который идентичен независимо от типа объекта, являющегося человеком или бизнесом. И ваша ссылка на огромный блок кода, вы не хотите копировать / вставлять тот же самый точный код среди всех других классов, которые могут быть предназначены для использования схожих общих «вещей», которые нужно сделать.
Для простого примера, у вас есть функциональность, которая формирует имя и адрес человека (или название и адрес компании). У вас есть код, который ожидает имя и до 3 строк адреса, а также город, штат, почтовый индекс (или любой другой). Таким образом, форматирование такой информации имя / адрес одинаково для человека и бизнеса. Вы не хотите копировать этот точный метод снова и снова между ними. Однако у каждого отдельного класса есть свои вещи, за которые он отвечает.
Я знаю, что это простой пример для контекста, но я думаю, что все понятно.
Проблема только с определением интерфейса заключается в том, что он не позволит вам фактически реализовать код, на который вы ссылаетесь.
Из вашего примера я бы подумал о том, чтобы сделать комбинацию вещей. Создайте статический класс с методами, которые вы можете использовать как «глобально» доступные. Разрешить передачу в него параметра экземпляра класса, который имеет тип интерфейса, который все остальные выразили, который будет гарантировать, что входящий объект имеет все «куски» свойств / методов, которые вы ожидаете, и заставит IT работать это по мере необходимости. Что-то вроде
public interface ITheyHaveInCommon
{
string Name;
string GetOtherValue();
int SomethingElse;
}
public class Person : ITheyHaveInCommon
{
// rest of your delcarations for the required contract elements
// of the ITheyHaveInCommon interface...
}
public class Country : ITheyHaveInCommon
{
// rest of your delcarations for the required contract elements
// of the ITheyHaveInCommon interface...
}
public static class MyGlobalFunctions
{
public static string CommonFunction1( ITheyHaveInCommon incomingParm )
{
// now, you can act on ANY type of control that uses the
// ITheyHaveInCommon interface...
string Test = incomingParm.Name
+ incomingParm.GetOtherValue()
+ incomingParm.SomethingElse.ToString();
// blah blah with whatever else is in your "huge" function
return Test;
}
}