|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
InstanceDescriptor problem rendering Nullable<double> constructor parameterspublic class MyClass { public MyClass(double? x, double? y) { } } I have created a type converter for this class that converts MyClass to an InstanceDescriptor which renders a line of code like the following on a form when x and y are null: this.myComponent1.MyClassInstance = new MyClass(null, null); The designer deserialization mechanism in Visual Studio is able to correctly determine which constructor must be called on the MyClass class when entering design mode. However, if x and y are not null, and happen to have no decimal, the following line of code is rendered: this.myComponent1.MyClassInstance = new MyClass(2, 1); This causes an exception when the form is designed with an error about a constructor with Int32, Int32 signature not being found. It appears as though there is no implicit conversion (for some reason) from Int32 to Nullable<Double>. So far I have not been able to find a way to cause the InstanceDescriptor to render an explicit cast statement (double?) to ensure the constructor is called successfully. Has anyone experienced this problem before, and if so, how did you solve it? Thanks. -- Nathan Hi, Nathan
Maybe you can just add another one constructor? public MyClass(int t1, int t2) { } Show quote > I have a class like so: > > public class MyClass > { > public MyClass(double? x, double? y) > { > } > } > > I have created a type converter for this class that converts MyClass to an > InstanceDescriptor which renders a line of code like the following on a form > when x and y are null: > > this.myComponent1.MyClassInstance = new MyClass(null, null); > > The designer deserialization mechanism in Visual Studio is able to correctly > determine which constructor must be called on the MyClass class when > entering design mode. > > However, if x and y are not null, and happen to have no decimal, the > following line of code is rendered: > > this.myComponent1.MyClassInstance = new MyClass(2, 1); > > This causes an exception when the form is designed with an error about a > constructor with Int32, Int32 signature not being found. It appears as > though there is no implicit conversion (for some reason) from Int32 to > Nullable<Double>. > > So far I have not been able to find a way to cause the InstanceDescriptor to > render an explicit cast statement (double?) to ensure the constructor is > called successfully. > > Has anyone experienced this problem before, and if so, how did you solve it? > > Thanks. > > -- Nathan > > Hi, Nathan
Maybe you can just add another one constructor? public MyClass(int t1, int t2) { } Show quote > I have a class like so: > > public class MyClass > { > public MyClass(double? x, double? y) > { > } > } > > I have created a type converter for this class that converts MyClass to an > InstanceDescriptor which renders a line of code like the following on a form > when x and y are null: > > this.myComponent1.MyClassInstance = new MyClass(null, null); > > The designer deserialization mechanism in Visual Studio is able to correctly > determine which constructor must be called on the MyClass class when > entering design mode. > > However, if x and y are not null, and happen to have no decimal, the > following line of code is rendered: > > this.myComponent1.MyClassInstance = new MyClass(2, 1); > > This causes an exception when the form is designed with an error about a > constructor with Int32, Int32 signature not being found. It appears as > though there is no implicit conversion (for some reason) from Int32 to > Nullable<Double>. > > So far I have not been able to find a way to cause the InstanceDescriptor to > render an explicit cast statement (double?) to ensure the constructor is > called successfully. > > Has anyone experienced this problem before, and if so, how did you solve it? > > Thanks. > > -- Nathan > > |
|||||||||||||||||||||||