Let’s say I have an interface representing a domain object:
public interface IFoo { Bar Bar { get; } }
The Bar type is a family of objects, each of which has a slightly different schema. In the database, this is represented as XML (this is a mobile app, so it is simply nvarchar, not a true XML column).
I have a generated DataSet which contains an FooDataTable and corresponding FooRow objects:
// AcmeDataSet.designer.cs public partial class FooRow : DataRow { public string BarXml { // Generated get and set } }
I would like to implement IFoo and cache the deserialized instance of Bar:
// FooRow.cs public partial class FooRow : IFoo { private Bar _bar; Bar IFoo.Bar { get { return _bar; } } }
How can I, from within the partial class, determine that the value of BarXml has changed?
I realize that FooDataTable contains ColumnChanging and ColumnChanged events, but I don’t know how to subscribe to them. There is no analog to Linq to Sql’s OnCreated partial method and I don’t know of another way to hook into the generated constructor.
If I understand you correctly, then your FooRow object (the instance) is an instance of some type that derives from Type DataRow… If so, then since DataRow has a property that references the DataTable, just cast your IFoo variable to a DataRow,
Inside of FooRow
Then, in FooDataTable class, add a new factory method, MyNewFooRow()
and use this new factory wherever you were using the old one…