|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Anyone knows the C# EquivalentI am trying to convert a program from Microsoft VB.NET team: http://blogs.msdn.com/vbteam/archive/2005/04/14/TableAdaptersAndObjects.aspx I am having a hard time converting the following two sections. Anyone knows the C# equivalent? - oringial VB.NET code from VB Team: Public Sub AcceptChanges() For Each item As T In Me.Items item.ObjectState = ObjectState.Unchanged Next DeletedRows.Clear() End Sub - my approach: public void AcceptChanges() { foreach (T item in this.Items) { item.ObjectState = ObjectState.Unchanged; } DeletedRows.Clear(); } - Visusal Studio error: 'T' does not contain a definition for 'ObjectState' 2. Original code from VB team: Dim txScope As New System.Transactions.TransactionScope Using txScope ... end using - my approach: using txScope { ... } - Visual Studio: Syntax error, '(' expected Best regards, Alan L. On Feb 17, 10:52 am, "alee via DotNetMonster.com" <u31808@uwe> wrote: What is your definition for "T"? I am assuming this article is using> - my approach: > public void AcceptChanges() > { > foreach (T item in this.Items) > { > item.ObjectState = ObjectState.Unchanged; > } > DeletedRows.Clear(); > } > - Visusal Studio error: 'T' does not contain a definition for 'ObjectState' it as a generic object, meaning you need to create it and what it is supposed to be; in this case, give it a property of "ObjectState". Read the article to figure out what the expectations of the object are (namely, what it is supposed to be based on). > - my approach: This is an issue of scope. The proper syntax is:> > using txScope > { > ... > } > - Visual Studio: > > Syntax error, '(' expected > using (txScope) { .... } -- lucas Lucas,
Thanks for your suggestions. The using syntax works fine now. However, I have tried several method to define the following VB.NET equivalence without any luck. VB.NET Public MustInherit Class BaseList(Of T As BaseObject) Inherits BindingList(Of T) C# - tried public abstract class BaseList<T as BaseObject> : BindingList<T> public abstract class BaseList<T:BaseObject> : BindingList<T> I just want to the generic T to inherit properties defined in BaseObject. Cheers, Alan L. sturn***@gmail.com wrote: Show quote >> - my approach: >> public void AcceptChanges() >[quoted text clipped - 6 lines] >> } >> - Visusal Studio error: 'T' does not contain a definition for 'ObjectState' > >What is your definition for "T"? I am assuming this article is using >it as a generic object, meaning you need to create it and what it is >supposed to be; in this case, give it a property of "ObjectState". >Read the article to figure out what the expectations of the object are >(namely, what it is supposed to be based on). > >> - my approach: >> >[quoted text clipped - 5 lines] >> >> Syntax error, '(' expected > >This is an issue of scope. The proper syntax is: > >using (txScope) >{ > .... >} > >-- >lucas -- Message posted via DotNetMonster.com http://www.dotnetmonster.com/Uwe/Forums.aspx/dotnet-new-users/200702/1 alee via DotNetMonster.com wrote:
> Public MustInherit Class BaseList(Of T As BaseObject) Inherits BindingList(Of public abstract class BaseList<T> : BindingList<T>> T) where T : BaseObject -- Barry Hello Barry,
Thanks for your suggestion, and it does solve the problem. Regards, Alan L. Barry Kelly wrote: Show quote >> Public MustInherit Class BaseList(Of T As BaseObject) Inherits BindingList(Of >> T) > >public abstract class BaseList<T> : BindingList<T> > where T : BaseObject > >-- Barry > -- Message posted via DotNetMonster.com http://www.dotnetmonster.com/Uwe/Forums.aspx/dotnet-new-users/200702/1 alee via DotNetMonster.com wrote:
> - Visusal Studio error: 'T' does not contain a definition for 'ObjectState' C# is case sensetive while VB is not. Have you checked the exact name, so it isn't for example "objectState"? > - my approach: using (txScope) {> > using txScope > { > ... > } > - Visual Studio: > > Syntax error, '(' expected ... } Hi Goran,
Thanks. The using syntax works, but I still have problem converting the definition for the generic T. I public abstract class BaseList<T of BaseObject> : BindingList<T> - I want the generic key argument inherits properties defined in BaseObject. Originaal VB.NET syntax is: Public MustInherit Class BaseList(Of T As BaseObject) Inherits BindingList(Of T) Cheers, Alan L. Göran Andersson wrote: Show quote >> - Visusal Studio error: 'T' does not contain a definition for 'ObjectState' > >C# is case sensetive while VB is not. Have you checked the exact name, >so it isn't for example "objectState"? > >> - my approach: >> >[quoted text clipped - 5 lines] >> >> Syntax error, '(' expected > >using (txScope) { > ... >} > -- Message posted via DotNetMonster.com http://www.dotnetmonster.com/Uwe/Forums.aspx/dotnet-new-users/200702/1 If you have a base class for all objects that the class handles, then
you don't need to use generics at all in your class. Just use the base class when you inherit the BindingList. public abstract class BaseList : BindingList<BaseObject> Now your BaseList is a BindingList that handles any object that inherits from BaseObject. In your method that loops the items, just reference them as BaseObject: public void AcceptChanges() { foreach (BaseObject item in this.Items) { item.ObjectState = ObjectState.Unchanged; } DeletedRows.Clear(); } alee via DotNetMonster.com wrote: Show quote > Hi Goran, > > Thanks. The using syntax works, but I still have problem converting the > definition > for the generic T. I > > public abstract class BaseList<T of BaseObject> : BindingList<T> > > - I want the generic key argument inherits properties defined in BaseObject. > > Originaal VB.NET syntax is: > > Public MustInherit Class BaseList(Of T As BaseObject) Inherits BindingList(Of > T) > > Cheers, > > Alan L. > > > Göran Andersson wrote: >>> - Visusal Studio error: 'T' does not contain a definition for 'ObjectState' >> C# is case sensetive while VB is not. Have you checked the exact name, >> so it isn't for example "objectState"? >> >>> - my approach: >>> >> [quoted text clipped - 5 lines] >>> Syntax error, '(' expected >> using (txScope) { >> ... >> } >> > Hi Goran
The BaseObject will be inherited by other classes. And I am defining an extension to the BindingList<T>. I solved the problem by using the where keyworkd suggested by Barry and Mehdi. Thanks for your feedback. Regards, Alan L. Göran Andersson wrote: Show quote >If you have a base class for all objects that the class handles, then >you don't need to use generics at all in your class. Just use the base >class when you inherit the BindingList. > >public abstract class BaseList : BindingList<BaseObject> > >Now your BaseList is a BindingList that handles any object that inherits >from BaseObject. > >In your method that loops the items, just reference them as BaseObject: > >public void AcceptChanges() { > foreach (BaseObject item in this.Items) { > item.ObjectState = ObjectState.Unchanged; > } > DeletedRows.Clear(); >} > >> Hi Goran, >> >[quoted text clipped - 26 lines] >>> ... >>> } > -- Message posted via DotNetMonster.com http://www.dotnetmonster.com/Uwe/Forums.aspx/dotnet-new-users/200702/1
Show quote
On Feb 17, 7:52 pm, "alee via DotNetMonster.com" <u31808@uwe> wrote: Hi,> Hello, > > I am trying to convert a program from Microsoft VB.NET team: > > http://blogs.msdn.com/vbteam/archive/2005/04/14/TableAdaptersAndObjec... > > I am having a hard time converting the following two sections. Anyone knows > the C# equivalent? > > - oringial VB.NET code from VB Team: > Public Sub AcceptChanges() > > For Each item As T In Me.Items > > item.ObjectState = ObjectState.Unchanged > > Next > > DeletedRows.Clear() > > End Sub > > - my approach: > public void AcceptChanges() > { > foreach (T item in this.Items) > { > item.ObjectState = ObjectState.Unchanged; > } > DeletedRows.Clear(); > } > - Visusal Studio error: 'T' does not contain a definition for 'ObjectState' > > 2. Original code from VB team: > > Dim txScope As New System.Transactions.TransactionScope > > Using txScope > ... > end using > > - my approach: > > using txScope > { > ... > } > - Visual Studio: > > Syntax error, '(' expected > > Best regards, > > Alan L. > > -- > Message posted viahttp://www.dotnetmonster.com The first equivalent: Well, you are trying to use a class (T) that is supposed to have an ObjectState property. However, this should be explicitly declared using the "where" keyword in C#. You need to change the class definition to something as follows: public class MyClass<T> where T: BizObjBase this tells the compiler that T is of type BizObjBase... The second equivalent: using (TransactionScope txScope = new TransactionScope()) { //do whatever you need with txScope } HTH, Mehdi Hello Mehdi,
Thanks for your suggestions, and they work well. Regards, Alan L. mehdi wrote: Show quote >> Hello, >> >[quoted text clipped - 53 lines] >> -- >> Message posted viahttp://www.dotnetmonster.com > >Hi, > >The first equivalent: >Well, you are trying to use a class (T) that is supposed to have an >ObjectState property. However, this should be explicitly declared >using the "where" keyword in C#. You need to change the class >definition to something as follows: > >public class MyClass<T> where T: BizObjBase > >this tells the compiler that T is of type BizObjBase... > >The second equivalent: >using (TransactionScope txScope = new TransactionScope()) >{ > //do whatever you need with txScope >} > >HTH, >Mehdi -- Message posted via DotNetMonster.com http://www.dotnetmonster.com/Uwe/Forums.aspx/dotnet-new-users/200702/1 Google instant C#, this application will translate your VB code into C#. It
is very good. -- Regards, Alvin Bruney ------------------------------------------------------ Shameless author plug Excel Services for .NET is coming... OWC Black book on Amazon and www.lulu.com/owc Professional VSTO 2005 - Wrox/Wiley "alee via DotNetMonster.com" <u31808@uwe> wrote in message news:6df2e29b449bc@uwe...Show quote > Hello, > > I am trying to convert a program from Microsoft VB.NET team: > > http://blogs.msdn.com/vbteam/archive/2005/04/14/TableAdaptersAndObjects.aspx > > I am having a hard time converting the following two sections. Anyone > knows > the C# equivalent? > > > - oringial VB.NET code from VB Team: > Public Sub AcceptChanges() > > For Each item As T In Me.Items > > item.ObjectState = ObjectState.Unchanged > > Next > > DeletedRows.Clear() > > End Sub > > - my approach: > public void AcceptChanges() > { > foreach (T item in this.Items) > { > item.ObjectState = ObjectState.Unchanged; > } > DeletedRows.Clear(); > } > - Visusal Studio error: 'T' does not contain a definition for > 'ObjectState' > > 2. Original code from VB team: > > Dim txScope As New System.Transactions.TransactionScope > > Using txScope > ... > end using > > - my approach: > > using txScope > { > ... > } > - Visual Studio: > > Syntax error, '(' expected > > Best regards, > > Alan L. > > -- > Message posted via http://www.dotnetmonster.com > Hello Alvin,
I will look into using instant C# for my future projects. Thanks and Regards, Alan L. Alvin Bruney [MVP] wrote: Show quote >Google instant C#, this application will translate your VB code into C#. It >is very good. > >> Hello, >> >[quoted text clipped - 52 lines] >> >> Alan L. -- Message posted via DotNetMonster.com http://www.dotnetmonster.com/Uwe/Forums.aspx/dotnet-new-users/200702/1 |
|||||||||||||||||||||||