|
Please see the following code snippet
class BaseClass
{
public virtual void SampleFun()
{
Console.WriteLine("In base class SampleFun");
}
}
class ChildClass : BaseClass
{
public override void SampleFun()
{
Console.WriteLine("In child class samplefun");
}
}
class GrandChild : ChildClass
{
public GrandChild()
{
Console.WriteLine("Grandchild contructor");
base.SampleFun();
}
}
From grandchild class I am able to call the Child classes overrided method. But how to call BaseClass original method from GrandChild class ? When I try to call this.SampleFun() , VS editor shows two overloaded method. But I am able to call only ChildClass SampleFun() method. Is there any way to call BaseClass SampleFun() method.
|
|
|
|
|
base.base.SampleFun();
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Christian Graus wrote: base.base.SampleFun();
Thanks christian. But this won't work.. I tried. MSDN say's it is not possible to do what I asked. Do you have any suggestions ?
|
|
|
|
|
OK, I thought that worked. Try somethng like
Base base = this;
That would do it, I would expect. i.e. create an instance of the bottom level class to call.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Christian Graus wrote: OK, I thought that worked. Try somethng like
Base base = this;
I feel base is reserved word. It is not allowing me to do this. So I tried something like this
BaseClass base1 = this;
base1.SampleFun();
This compiled without producing any error. But in runtime, it called child classes overrided SampleFun() method.
|
|
|
|
|
It doesn't matter how you cast the reference, the virtual method is called for the actual class of the instance. That is the purpose of virtual methods.
---
single minded; short sighted; long gone;
|
|
|
|
|
That's impossible. As the method in the base class is overridden, it doesn't exist at all in the child classes.
Virtual methods is called using the virtual method table for the actual class of the instance. The method in the base class only exists in the virtual method table for the base class, so you need an instance of that class to call that method.
---
single minded; short sighted; long gone;
|
|
|
|
|
Thanks Guffa for making that clear. I tried with martins suggestion, and it worked.
|
|
|
|
|
Hello,
I think, In this case only a trick could work:
class BaseClass
{
public virtual void SampleFun(bool TakeBase)
{
Console.WriteLine("In base class SampleFun");
}
}
class ChildClass : BaseClass
{
public override void SampleFun(bool TakeBase)
{
if(TakeBase)
{
base.SampleFun(TakeBase)
}
else
{
Console.WriteLine("In child class samplefun");
}
}
}
class GrandChild : ChildClass
{
public GrandChild()
{
Console.WriteLine("Grandchild contructor");
base.SampleFun(true);
base.SampleFun(false);
}
}
Never tested it! (maybe it's like Guffa sayed bevor)
Hope it helps!
All the best,
Martin
|
|
|
|
|
Hello martin,
Excellent...Yes your trick clicked. It worked.. Thanks.
|
|
|
|
|
Glad, I could help!
All the best,
Martin
|
|
|
|
|
some kind of very ugly hack.
I think that the underlying problem lies within the class design. Why to call the method of the BaseClass when the GrandChild is actually a Child. This doesn't make any sense to me. Luckily, it isn't me that has to maintain this code
-^-^-^-^-^-
no risk no funk ................... please vote ------>
|
|
|
|
|
What are the possibilities for the following error ' Exception has been thrown by the target of an invocation ' in C#.net
|
|
|
|
|
This is generally a remoting related error.
|
|
|
|
|
Ilango Gandhi wrote: What are the possibilities for the following error ' Exception has been thrown by the target of an invocation ' in C#.net
Almost anything. It means that you have called a method using Invoke , and during the execution of that method an exception occured.
Examine the InnerException property of the exception that you got. That will contain the exception that occured in the call.
---
single minded; short sighted; long gone;
|
|
|
|
|
You also get this error when an exception occurs in a Background Worker
|
|
|
|
|
Hi All,
Iam using 3 tier architecture.Now what iam doing is i written database related things into DAL.Now i want to access these class and methods into
BLL.After that iam accessing BLL classes into my GUI.But here it is showing this error
Type Load Exception Was Unhandled by User Code
Could not load type 'DAL.JoDetailsDAL' from assembly 'DAL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Here is My DAL Code file
JoDetailsDAL.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Data.SqlClient;
namespace DAL
{
public class JoDetailsDAL
{
CommonDAL objCommonDAL = new CommonDAL();
public SqlDataReader getcustomer(ref string errorMsg)
{
string strSelect = "select CustomerName from cm_tb_032";
return objCommonDAL.getDataReader(strSelect, ref errorMsg);
}
public SqlDataReader getvendor(ref string errorMsg)
{
string strSelect = "select VendorName from cm_tb_033";
return objCommonDAL.getDataReader(strSelect, ref errorMsg);
}
public SqlDataReader getvendorcity(ref string errorMsg)
{
string strSelect = "select VendorCity from cm_tb_034";
return objCommonDAL.getDataReader(strSelect, ref errorMsg);
}
public SqlDataReader getvendorstate(ref string errorMsg)
{
string strSelect = "select VendorState from cm_tb_035";
return objCommonDAL.getDataReader(strSelect, ref errorMsg);
}
public SqlDataReader getjostatus(ref string errorMsg)
{
string strSelect = "select Status from cm_tb_036";
return objCommonDAL.getDataReader(strSelect, ref errorMsg);
}
public SqlDataReader getamendmentstatus(ref string errorMsg)
{
string strSelect = "select AmendmentStatus from cm_tb_038";
return objCommonDAL.getDataReader(strSelect, ref errorMsg);
}
public SqlDataReader getdeliveryschedule(ref string errorMsg)
{
string strSelect = "select DelSchedule from cm_tb_039";
return objCommonDAL.getDataReader(strSelect, ref errorMsg);
}
public SqlDataReader termsofpayment(ref string errorMsg)
{
string strSelect = "select TermsOfPayment from cm_tb_040";
return objCommonDAL.getDataReader(strSelect, ref errorMsg);
}
}
}
Here is My BLL Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
using DAL;
namespace BLL
{
public class JoDetailsBLL
{
JoDetailsDAL objJoDetailsDAL = new JoDetailsDAL();
public SqlDataReader getcustomer(ref string errorMsg)
{
return objJoDetailsDAL.getcustomer(ref errorMsg);
}
public SqlDataReader getvendor(ref string errorMsg)
{
return objJoDetailsDAL.getvendor(ref errorMsg);
}
public SqlDataReader getvendorcity(ref string errorMsg)
{
return objJoDetailsDAL.getvendorstate(ref errorMsg);
}
public SqlDataReader getvendorstate(ref string errorMsg)
{
return objJoDetailsDAL.getvendorstate(ref errorMsg);
}
public SqlDataReader getjostatus(ref string errorMsg)
{
return objJoDetailsDAL.getjostatus(ref errorMsg);
}
public SqlDataReader getamendmentstatus(ref string errorMsg)
{
return objJoDetailsDAL.getamendmentstatus(ref errorMsg);
}
public SqlDataReader getdeliveryschedule(ref string errorMsg)
{
return objJoDetailsDAL.getdeliveryschedule(ref errorMsg);
}
public SqlDataReader termsofpayment(ref string errorMsg)
{
return objJoDetailsDAL.termsofpayment(ref errorMsg);
}
}
}
Here is my GUI Code file
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Reflection;
using BLL;
public partial class JoDetails : System.Web.UI.Page
{
JoDetailsBLL objJoDetailsBLL = new JoDetailsBLL();
string errorMsg = null;
protected void Page_Load(object sender, EventArgs e)
{
getcustomer();
getvendor();
getvendorcity();
getvendorstate();
vendorinvoicecity();
vendorinvoicestate();
jopartcity();
joshipcity();
joshipstate();
jostatus();
joamendmentstatus();
getdeliveryschedule();
termsofpayment();
}
public void getcustomer()
{
SqlDataReader dr = objJoDetailsBLL.getcustomer(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoCustomerLst.DataSource = dr;
JoCustomerLst.DataTextField = "cust_name";
JoCustomerLst.DataBind();
}
}
public void getvendor()
{
SqlDataReader dr = objJoDetailsBLL.getvendor(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoVendorLst.DataSource = dr;
JoVendorLst.DataTextField = "vendor_name";
JoVendorLst.DataBind();
}
}
public void getvendorcity()
{
SqlDataReader dr = objJoDetailsBLL.getvendorcity(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoVendorCityLst.DataSource = dr;
JoVendorCityLst.DataTextField = "vendor_city";
JoVendorCityLst.DataBind();
}
}
public void getvendorstate()
{
SqlDataReader dr = objJoDetailsBLL.getvendorstate(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoVendorStateLst.DataSource = dr;
JoVendorStateLst.DataTextField = "vendor_state";
JoVendorStateLst.DataBind();
}
}
public void vendorinvoicecity()
{
SqlDataReader dr = objJoDetailsBLL.getvendorcity(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoInvoiceToCityLst.DataSource = dr;
JoInvoiceToCityLst.DataTextField = "vendorinvoice_city";
JoInvoiceToCityLst.DataBind();
}
}
public void vendorinvoicestate()
{
SqlDataReader dr = objJoDetailsBLL.getvendorstate(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoInvoiceToStateLst.DataSource = dr;
JoInvoiceToStateLst.DataTextField = "vendorinvoice_state";
JoInvoiceToStateLst.DataBind();
}
}
public void jopartcity()
{
SqlDataReader dr = objJoDetailsBLL.getvendorcity(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoParCityLst.DataSource = dr;
JoParCityLst.DataTextField = "jopart_city";
JoParCityLst.DataBind();
}
}
public void joshipcity()
{
SqlDataReader dr = objJoDetailsBLL.getvendorcity(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoShipToCityLst.DataSource = dr;
JoShipToCityLst.DataTextField = "joship_city";
JoShipToCityLst.DataBind();
}
}
public void joshipstate()
{
SqlDataReader dr = objJoDetailsBLL.getvendorstate(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoShipToStateLst.DataSource = dr;
JoShipToStateLst.DataTextField = "joship_state";
JoShipToStateLst.DataBind();
}
}
public void jostatus()
{
SqlDataReader dr = objJoDetailsBLL.getjostatus(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoStatusLst.DataSource = dr;
JoStatusLst.DataTextField = "joship_status";
JoStatusLst.DataBind();
}
}
public void joamendmentstatus()
{
SqlDataReader dr = objJoDetailsBLL.getamendmentstatus(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoAmendStatusLst.DataSource = dr;
JoAmendStatusLst.DataTextField = "amendment_status";
JoAmendStatusLst.DataBind();
}
}
public void getdeliveryschedule()
{
SqlDataReader dr = objJoDetailsBLL.getdeliveryschedule(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoDeliveryLst.DataSource = dr;
JoDeliveryLst.DataTextField = "delivery_schedule";
JoDeliveryLst.DataBind();
}
}
public void termsofpayment()
{
SqlDataReader dr = objJoDetailsBLL.termsofpayment(ref errorMsg);
if (dr == null)
{
errorLbl.Text = errorMsg;
errorLbl.Visible = true;
}
else
{
JoTermsOfPayLst.DataSource = dr;
JoTermsOfPayLst.DataTextField = "terms_payment";
JoTermsOfPayLst.DataBind();
}
}
}
Please help on this .
veeresh
|
|
|
|
|
Hii This is kumar recently i saw the application in code project regarding getting the files from the remote server in the below URL
http://www.codeproject.com/dotnet/FTPWinFormClient.asp
here i am getting the error as
A socket program was attempted to an unreachable host
i am getting this error in the drawDirectoryContents() method in the code .
can any one please help me in this ontest and mail me to my id if possible plsssss
santu412@gmail.com,
regards,
kumar
|
|
|
|
|
1 - try using meaningful subject lines
2 - don't give your email address on the site
3 - the forum that appears under the article is there for you to ask the author questions.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
:: Try to write a subject line that says anything about the subject of the thread.
:: However urgent you may think it is, it's never so urgent that it's worth mentioning in the subject line, or you wouldn't have posted the question in a forum instead of paying for assistance.
:: Don't ask for replies to your mailbox. Replies goes to the forum, where everyone can benefit.
santu_kumar wrote: here i am getting the error as
A socket program was attempted to an unreachable host
i am getting this error in the drawDirectoryContents() method in the code .
What ftp site have you specified as host? Have you checked that you can reach the ftp at all from your computer?
---
single minded; short sighted; long gone;
|
|
|
|
|
Hi Buddies,
I think this quest will confus you. Wht i wanna to do is tht, I have develop 1 application in C# which can programaticallygenerating one Class file(say class1.cs) in C:\.
class1.cs will contain one method which include nos. of exe path which would be invoke one by one after calling this method.
In clicking on button I have to compile this file(class1.cs) automatically. If there is any error, redirect it to one text file else create one instant of class1.cs and then call the method.
Problem is
"how to create whole C# project programatically" and
"how to compile this .cs file programatically".
Help wud b appreciated.
Regards
Chintan
www.visharadsoft.com
(I am thinking to change humans to computer, but unfortunately GOD will not give me the source code)
|
|
|
|
|
Chintan.Desai wrote: "how to create whole C# project programatically"
I don't think that you can create whole C# project programatically. But you can create a C# file ( cs ) since it is a normal text file. Use FileStream to create the file.
Chintan.Desai wrote: "how to compile this .cs file programatically".
Are you familiar with compiling C# file from command file. ? If yes you can write a bat file which contains these commands and execute the bat file. But regarding Identifying error and coming back to C# file, I don't have much idea.
|
|
|
|
|
Chintan.Desai wrote: how to compile this .cs file programatically
You can do it using CSharpCodeProvider class. This article describes how to do it: Mp3ToExe[^]
|
|
|
|
|
thanxs,u have solve my quest. Even, I have completed my module this evening.
thanx again
bye
Regards
Chintan
www.visharadsoft.com
(I am thinking to change humans to computer, but unfortunately GOD will not give me the source code)
|
|
|
|
|
Hi all
I posted this question yesterday also and no one replied me. I think no one is willing to help me or angry with me......
I want to read a particular node of xml file. For that i am using the code
XmlTextReader reader = new XmlTextReader ("tx1.xml");
while (reader.Read ())
{
if(reader.IsStartElement ())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "jid")
{
str=reader.ReadString();
Lblmsg.Visible=true;
Lblmsg.Text="journal ID <"+ reader.Name+ "> is : "+str;
reader.Read();
break;
}
break;
}
}
but here the problem is it is trying to validate the xml file using the DTD. I dont want to validate it using dtd. Plz help to solve this. what i have to use here. Plz help me thank u
|
|
|
|