Re: return object of an unknown type




I understand now, no :)
You can overload methods but they have to have different signatures and
return type is not part of the signature.

So the following is legal, but a version where getdata takes no
parameters in both is not.
I think Allan's ideas are best.

public class MyMainClass
{
/// <summary>
/// test
/// </summary>
public MyMainClass(){}
/// <summary>
/// test2
/// </summary>
/// <returns></returns>
public virtual Control GetData()
{
object o = new Form();
return (Form)o;
}
public virtual Form GetData(Form pForm)
{
object o = new Form();
return (Form)o;
}
}
public class MyClass2 : MyMainClass
{
public MyClass2(){}
public override Control GetData()
{
MyMainClass a = new MyMainClass();
a.GetData();
object o = base.GetData ();
//will break as base returns a form but its for example purposes
return (TextBox)o;
}

public override Form GetData(Form pForm)
{
return base.GetData (pForm);
}
}



On 25 Jan, 13:27, "Alexander Widera"
<a...@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
ok ... i try it:

public class MyMainClass
{
protected virtual object o = new TextBox();

public MyMainClass(){}

public virtual TextBox GetData()
{
// do something..
// only placeholer
// .....

// and return
return (TextBox)this.o;
}

}public class MyClass2 : MyMainClass
{

// something like this
protected override object o = new Form();

public MyClass2(){}

// and something like this...
public override Form GetData()
{
// do something..
// only placeholer
// .....

// and return
return (Form)this.o;
}

}the both classes are nearly the same... only the difference, that the Method
GetData() should return different types. is there a way to manage this? (and
not to write the method completely again?)

alex

"DeveloperX" <nntp...@xxxxxxxxxxxxx> schrieb im Newsbeitragnews:1169730546.999831.171290@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx



Ok, so you have something like this? I'm using Form and TextBox just as
examples.

public class MyMainClass
{
public MyMainClass(){}
public virtual Control GetData()
{
object o = new Form();
return (Form)o;
}
}
public class MyClass2 : MyMainClass
{
public MyClass2(){}
public override Control GetData()
{
object o = base.GetData ();
//will break as base returns a form but its for example purposes
return (TextBox)o;
}
}

If you can do a little example like that which compiles and a comment
for the bit you don't understand it should be a little clearer.

On 25 Jan, 12:07, "Alexander Widera"
<a...@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
thanks for your answer, but i think this issn't the result of my problem
i don't want to make a usual cast ...
in a variable should be the type of an object and a method should return
an
other object as this type.

perhaps i have to specifize the situation:

i have 2 classes ... MyMainClass and MyClass2 ... MyClass2 is derived of
MyMainClass

in MyMainClass there is an Method like this

public virtual OtherObject GetData()
{
// .. a lot work to do...
return (OtherType)privateObject);

}privateObject is a variable of the type "object" and the method returns
it
casted to "OtherType".

in MyClass2 this Method should not return the privateObject casted to
"OtherType" ... it should return it casted to "AnotherType"...
because there is much to do in this method (not shown above), i don't
want
to rewrite the method completely for every child-class of MyMainClass...

has somebody an idea?

Alex

"DeveloperX" <nntp...@xxxxxxxxxxxxx> schrieb im
Newsbeitragnews:1169725489.167238.325700@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Yes you can, but you should really have a very good reason for not
knowing in advance what the object type is.
Critically you need to understand a little about inheritence.
Everything in dotnet is derived from object, so a variable of type
object can hold anything. There are several ways of casting from one
type to another.

Here's some code.

object of;
object ot;
Form f = new Form();
TextBox t = new TextBox();

of=f;
ot=t;

f=null;
//cast example
f=(Form)of;

//this will throw an exception so commented out
//f=(form)ot;

//safe way of doing it.
f = of as Form;
if(null != f)
{
Console.WriteLine("of is a form");
}
//f should be null after this as ot points at a textbox
f = ot as Form;
if(null == f)
{
Console.WriteLine("ot is not a form");
}

On 25 Jan, 10:57, "Alexander Widera"
<a...@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
hi,
is it possible to return an object of an unknown (but not really
unknown)
type with an method?

i have the following situation:

- a variable (A) of the type "object" which contains the object
- a variable (B) of the type "Type" which contains the type of the
object
in
(A) (A should be of the type B)
- a method which should return the object (A) as type (B)

it sounds very simple, if you hard-code it, but it should be a little
more
dynamic.

here something in c#-pseudocode:

object myobject = ...
Type typeofobject = ...

public typeofobject GetTheObject()
{
return (typeofobject) myobject;

}Could you help me please?

Thanks in advance,
Alex- Hide quoted text -- Show quoted text -- Hide quoted text -- Show quoted text -

.



Relevant Pages

  • Re: return object of an unknown type
    ... I'm using Form and TextBox just as ... public virtual Control GetData() ... public class MyClass2: MyMainClass ... public override Control GetData() ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: return object of an unknown type
    ... public class MyMainClass ... public virtual TextBox GetData() ... public class MyClass2: MyMainClass ...
    (microsoft.public.dotnet.languages.csharp)
  • Accessing a method inside of an object that is stored in a vector...
    ... I am trying to access a getData() method that simply returns a stored ... That didnt work. ... here is the code I have so far of making the temp object and ... public class StackUser ...
    (comp.lang.java)
  • Re: write read string data
    ... GetData getData1 = new GetData; ... public class GetData extends JPanel { ... and then you compare it to a String. ...
    (comp.lang.java.help)