我无法修改我正在使用的对象,我需要一个方法,但我真的希望在创建对象时调用它。所以我认为扩展方法在这里会很好,但我不知道是否可行,但如果可行,那么如何实现?
编辑:
我的静态类有这个我应该创建的主要对象:
EcuVersion Ecu;
我将从我的类中调用这个方法:
Ecu = ConvertAutodetect.Convert(rawData, Ecu, response);
平台将寻找 Ecu 对象。
我的方法将返回一个 EcuVersion 对象。这个对象除了很多其他东西之外还包含一个集合,我只使用相应的集合:
ICollection<AutodetectStep> AutodetectSteps { get; set; }
AutodetectStep 类有 4 个 child ,在其中一个 child 上,我需要在创建 child 时调用此扩展方法。
我必须创建很多 child 并将它们添加到集合中,而且,我永远不会实例化我的对象,因为那里的一切都是静态的。
那么工厂模式适合用吗?
最佳答案
创建一个从你的类型继承的类
public class YourObject
{
public YourObject()
{
// some code
}
public void SomeMethod() {}
}
public class YourObjectWithExtraLogic : YourObject
{
public YourObjectWithExtraLogic() : base()
{
// here add some extra logic
}
}
然后您可以在使用基类的任何地方使用带有额外逻辑的类。
public void Execute(YourObject obj)
{
obj.SomeMethod();
}
var newObject = new YourObjectWithExtraLogic();
Execute(newObject);
使用这种方法时,您需要注意不要违反“Liskov 替换原则”。
例如,您的额外逻辑不能破坏基类的预期行为。
关于c# - 是否可以创建一个在创建对象时调用的扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442961/