Существует два подхода к этой проблеме:
Создайте базовый класс, который имеет все эти общие свойства, и извлеките из него другие.
public abstract class MyBaseClass
{
public string Name { get; set; }
public string Signature { get; set; }
public int Checksum { get; set; }
}
public class ClassX : MyBaseClass
{
// Add the other properties here
}
public class ClassY : MyBaseClass
{
// Add the other properties here
}
public class ClassZ : MyBaseClass
{
// Add the other properties here
}
Ваш вспомогательный метод будет иметь параметр типа MyBaseClass:
public void MyHelperMethod(MyBaseClass obj)
{
// Do something with obj.Name, obj.Siganture and obj.Checksum
}
Также было бы неплохо поместить вспомогательный метод в MyBaseClass, но без параметров, поскольку теперь он может обращаться к свойствам напрямую:
public abstract class MyBaseClass
{
public string Name { get; set; }
public string Signature { get; set; }
public int Checksum { get; set; }
public void CreateChecksum() // Your helper method
{
Checksum = Name.GetHashCode() ^ Signature.GetHashCode();
}
}
Тогда вы можете позвонить прямо из ваших объектов:
objA.CreateChecksum();
objB.CreateChecksum();
objB.CreateChecksum();
Или определите интерфейс, который реализуют ваши три класса:
public interface IMyInterface
{
string Name { get; set; }
string Signature { get; set; }
int Checksum { get; set; }
}
public class ClassX : IMyInterface
{
public string Name { get; set; }
public string Signature { get; set; }
public int Checksum { get; set; }
// Add the other properties here
}
public class ClassY : IMyInterface
{
public string Name { get; set; }
public string Signature { get; set; }
public int Checksum { get; set; }
// Add the other properties here
}
public class ClassZ : IMyInterface
{
public string Name { get; set; }
public string Signature { get; set; }
public int Checksum { get; set; }
// Add the other properties here
}
Ваш вспомогательный метод будет иметь параметр типа IMyInterface:
public void MyHelperMethod(IMyInterface obj)
{
// Do something with obj.Name, obj.Siganture and obj.Checksum
}
Вы можете вызвать MyHelperMethod следующим образом
MyHelperMethod(objA);
MyHelperMethod(objB);
MyHelperMethod(objC);