继承在时间上会变得棘手。我建议使用接口,这样您将拥有更多的灵活性。
public interface INewInterfaces
{
event EventHandler Clicked;
bool Enabled { get; }
void HandleClicked(object sender, EventArgs e);
}
public class NewClassA : ClassA, INewInterfaces
{
}
public class NewClassB : ClassB, INewInterfaces
{
}
编辑1:
如果您说ClassX非常相似,并且希望在所有这些不相关的类中使用相同的HandleClicked实现,则可以使用另外两种方法。
1- 仍然使用继承
创建一个接口并添加您想要使用的所有类中的公共函数。这将使ClassX归于同一家族。然后创建一个用于通用的类。
public interface IExistingInterfaces
{
void SomeMethod();
}
public class NewClassA : ClassA, IExistingInterfaces
{
}
public class NewClassB : ClassB, IExistingInterfaces
{
}
public class MyClassForGeneralUse : IExistingInterfaces
{
private IExistingInterfaces _baseObject;
public MyClassForGeneralUse(IExistingInterfaces baseObject)
{
_baseObject = baseObject;
}
public void SomeMethod()
{
_baseObject.SomeMethod();
}
public void HandleClicked(object sender, EventArgs e)
{
}
}
注意:第一部分是桥接模式,第二部分是装饰器模式
2- 反射
var propertyInfo = someObject.GetType().GetProperty("property name");
if (propertyInfo == null)
throw new Exception(string.Format("Property does not exist:{0}", condition.Property));
var propertyValue = propertyInfo.GetValue(someObject, null);
long longValue = (long)propertyValue;
result = methodInfo.Invoke(methodInfo, parametersArray);
但是反射可能过于复杂。