У вас есть несколько вариантов при этом.Я бы предложил создать интерфейс, содержащий общие методы и атрибуты, или использовать бокс / распаковку для передачи параметров в виде объектов и приведения их к типу, который вам необходим.
Для метода интерфейса вам нужно определитьобщий интерфейс:
public interface ICoordinatePoint
{
void SomeMethod();
int someAttribute;
}
Затем, при определении ваших классов, реализуйте этот интерфейс
public class Coordinate : ICoordinatePoint
public class Point3d : ICoordinatePoint
В вашей функции просто передайте переменные как ICoordinatePoint
s
public Line(ICoordinatePoint p1, ICoordinatePoint p2)
{
// Some stuff
}
Если вы хотите использовать бокс / распаковку, вы можете просто определить p1
и p2
как объекты:
public Line(object _p1, object _p2)
{
Coordinate p1 = (Coordinate)_p1;
Point3d p2 = (Point3d)_p2;
// Some stuff
}
Редактировать: если вы хотите убедиться, что ваши объекты не принадлежат к каким-либо другим типамВы можете проверить типы перед кастингом:
if (p1.GetType() != typeof(Coordinate) && p1.GetType() != typeof(Point3d)
// Raise error or return
if (p2.GetType() != typeof(Coordinate) && p1.GetType() != typeof(Point3d)
// Raise error or return