是否可以创建在创建对象时调用的扩展方法
本文关键字:调用 扩展 方法 创建对象 创建 是否 | 更新日期: 2023-09-27 18:16:42
我不能修改我正在使用的对象,我需要一个方法,但我真的希望它在创建对象时被调用。所以我在想一个扩展方法会很好,但我不知道它是否可能,但是,如果它是,然后如何?
编辑:
我的静态类有这个主对象,我应该创建:
EcuVersion Ecu;
我将从我的类中调用这个方法:
Ecu = ConvertAutodetect.Convert(rawData, Ecu, response);
,平台将查找Ecu对象。
我的方法将返回一个EcuVersion对象。这个对象包含一个集合,除了很多其他的东西,我只与各自的集合工作,这是:
ICollection<AutodetectStep> AutodetectSteps { get; set; }
AutodetectStep类有4个子类,在它的一个子类上,我需要在创建子类时调用这个扩展方法。
我必须创建许多子对象并将它们添加到集合中,而且,我永远不会实例化我的对象,因为那里的所有内容都是静态的。
那么使用工厂模式合适吗?
创建一个继承你的类型的类
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替代原则"。
例如,你的额外逻辑不能破坏基类的预期行为。
不,这不可能。如果它是,它将是非常不可靠的,因为它将取决于您是否包含相关的扩展与using
或没有。这实际上是扩展方法的普遍问题,但在这里它甚至更糟,因为它永远不会导致编译时错误。