|
Hi,
I have created two library (COM) in C# , and i have a interface method as UpdateData() in a component.
Now i need t0 pass a <key ,="" value=""> collection as a parameter in an interface method.
How can i ac chive this.
Can i pass a map object as a parameter in an interface method??
|
|
|
|
|
Are you talking about using a dot net collection parameter in a dot net interace method?
Could you please provide some more details so that the scenario becomes clearer?
There's nothing left in my right brain and nothing right in my left brain. |
modified on Thursday, December 10, 2009 12:40 PM
|
|
|
|
|
ok..
Let say ..
Interface IMyInterface
{
void DisplayData(??????);
}
Class MyClass : IMyInterface
{
void IMyInterface.DisplayData(??????)
{
Logic to display data
Display First Name ,
Display last name...
}
}
///From client.
Class Client
{
//I have a data structure (some data container or .net collection obj) , which saves data in a<< key , value >> format ..
MyClass myclass = new MyClass()
myclass.DisplayData( ???)
}
My question is how can i pass a collection data structure as a parameter in a interface DisplayData() method ??
Can i directly pass a collection object in interface method?? (Please note that this is an interface method and can be used by other languages.)
|
|
|
|
|
Hi all,
I am trying to send a class to a web service but I get error
SoapException was unhandled by user code
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Runtime.InteropServices.COMException (0x800706BA): The RPC server is unavailable.
It happens when I call the webservice in the follwoing line
info.sendInformation(createFile);
here is my web method,
[WebMethod]
public void sendInformation(object info)
{
etc.
}
and my code to call it
info createFile = new info();
createFile .Reference = txtReference.Text;
createFile .AccountNo = txtAccountNo.Text;
createFile info = new InfoService ();
info.sendInformation(createFile);
and the class
public class fax : TestPage
{
public string Reference
{
get { return _Reference; }
set { _Reference = value; }
}
public string AccountNo
{
get { return _AccountNo; }
set { _AccountNo = value; }
}
etc.
}
Thanks
|
|
|
|
|
I'm pretty certain that
info createFile = new info();
createFile .Reference = txtReference.Text;
createFile .AccountNo = txtAccountNo.Text;
createFile info = new InfoService ();
info.sendInformation(createFile);
doesn't compile. Can you clarify. And although I stand to be corrected, I'm pretty sure you can't send Object to a web service, it needs definition. Make your service accept an Info object or Fax as it is.
|
|
|
|
|
Sorry I copied it wrong, the following is the correct one and compiles fine
info createFile = new info();
createFile .Reference = txtReference.Text;
createFile .AccountNo = txtAccountNo.Text;
InfoService info = new InfoService ();
info.sendInformation(createFile);
Even if I define the same class in the web service still doesn't work because is different namespace.
Thanks
|
|
|
|
|
Ok. In your web service, define your class. Then accept the type of Fax in your sendInformation method of the WS.
Now, when you consume the web service, a type of Fax will become available. Visual studio creates code files to represent the objects you can pass up so, without you physically defining the file locally, you can;
Fax createFile = new Fax( );
createFile.Reference = txtReference.Text;
createFile.AccountNo = txtAccountNo.Text;
InfoService info = new InfoService( );
info.SendInformation( createFile );
Where your WS method looks like;
[WebMethod]
public void SendInformation( Fax info)
{
}
|
|
|
|
|
Hi,
I want to create an Annotation object inside a foreach loop with different name for it.
Example
foreach(...)
{
Annotation anno_1 = charts[0].CreateAnnotation();
}
How can i create the name of the Annotation foreach item..
example anno_1, anno_2, anno_3..
thanks
|
|
|
|
|
At a stab:
List<Annotation> annotations = new List<Annotation>();
foreach(var chart in charts)
{
Annotations.Add(chart.CreateAnnotation());
}
CCC solved so far: 2 (including a Hard One!)
37!?!! - Randall, Clerks
|
|
|
|
|
Why? How are you going to refer to them again? (without confusing the code with reflection of your running stuff?) Why not just keep them in a list like everyone else?
All those who believe in psycho kinesis, raise my hand.
|
|
|
|
|
Choose a different language. You can do that in DCL[^].
But, seriously, use System.Collections.Generic.List<Annotation> .
|
|
|
|
|
actually this is the code i want to run inside the foreach loop
Annotation aonnotation = m_ChartControl.Charts[0].AnnotationList.CreateAnnotation();
aonnotation.Location.TypeX = LengthType.Bound;
aonnotation.Location.X = 6;
aonnotation.Location.TypeY = LengthType.Bound;
aonnotation.Location.Y = 0;
aonnotation.Data = " ";
aonnotation.Font.Size = 4;
aonnotation.Font.Bold = false;
aonnotation.Color = Color.FromArgb(1, 1, 1);
modulePath = this.GetType().Module.FullyQualifiedName;
moduleDir = Path.GetDirectoryName(modulePath);
aonnotation.ImageFile = Path.Combine(moduleDir, "ArrUp.png");
This code will be create in each loop, but i cannot use the same variable name aonnotation because i need different name to generate annotations onto my chart.
|
|
|
|
|
Could you use an IEnumerable collection here?
There's nothing left in my right brain and nothing right in
my left brain. |
|
|
|
|
|
could you give me a little sample of using IEnumerable in my above code?
thanks
|
|
|
|
|
foreach(...){IEnumerable<annotation> anno = charts[0].CreateAnnotation();}
You can then access each of the annotation objects like an array.
anno[0].<property> = "...." etc.
There's nothing left in my right brain and nothing right in my left brain. |
|
|
|
|
|
hmm i get this error
Error 21 Cannot implicitly convert type 'Manco.Chart.CF.Layout.Annotation' to 'System.Collections.IEnumerable'. An explicit conversion exists (are you missing a cast?)
I tried doing this also cant work
IEnumberable<annotations> anno = m_ChartControl.Charts[0].AnnotationList.CreateAnnotation();
|
|
|
|
|
Apologies. This may work.
IEnumerable<Annotation> anno;<br />
foreach(...){ anno.Add(charts[0].CreateAnnotation());}
You can then access each of the annotation objects like an array.
anno[0]. = "...." etc
There's nothing left in my right brain and nothing right in my left brain. |
|
|
|
|
|
hmm
now i get this error
Error 21 'System.Collections.Generic.IEnumerable<Manco.Chart.CF.Layout.Annotation>' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'System.Collections.Generic.IEnumerable<Manco.Chart.CF.Layout.Annotation>' could be found (are you missing a using directive or an assembly reference?)
|
|
|
|
|
of course that should work. and so would a List<Annotation> as has been said earlier. I suggest you read up on the List class and some generic stuff, it is really powerful, and you can use it as an array (and more).
|
|
|
|
|
[Edited to clarify my rubbish English]
The problem is, judging from your code, m_ChartControl.Charts[0].AnnotationList.CreateAnnotation(); creates an individual annotation not a collection of annotations. This is causing the error you are getting.
In my earlier post, List<Annotation> is IEnumerable , and it shows you how to add individual annotations.
The problem you are experiencing in getting an answer here is because what you asked for in your original post is highly unusual in c# (though possible in laguages that follow a different paradigm). The normal c# practise is to create a in instance of a collection type such as list, array or collection (or their generic equivalents which are better) and add objects to the collection (rather than trying to create paremeters for each). You can the iterate over the collection as required.
What is the reason for trying to create a parameter-per-annotation?
CCC solved so far: 2 (including a Hard One!)
37!?!! - Randall, Clerks
|
|
|
|
|
What is it you're foreach ing?
|
|
|
|
|
well..
basically this is wat i am foreaching
public void AddAnnotations()
{
string toa = "calls";
while (true)
{
XmlDocument xmlPlogs = getAllPlogs(toa);
XmlNodeList plogs = xmlPlogs.SelectNodes("/PlogList/Plog");
Annotation[] anno = null;
int countA = 0;
int arrayIndex = 0;
foreach (XmlNode plog in plogs)
{
XmlNodeList receivers = plog.SelectNodes("PlogUnique/Message/Receiver");
foreach (DateTime dt in dateArray)
{
DateTime newDT = Convert.ToDateTime(plog.SelectSingleNode("PlogCommon/TimeOfOccurrence").InnerText);
newDT = Convert.ToDateTime(newDT.ToString("dd MMM"));
String content = plog.SelectSingleNode("PlogUnique/Message/Content").InnerText;
if((content.Contains(stockQuote)) && (newDT.ToString() == dt.ToString()))
{
for (int i = 0; i < dateArray.Length; i++)
{
if (dateArray[i] == newDT)
{
arrayIndex = i;
}
}
anno[countA] = m_ChartControl.Charts[0].AnnotationList.CreateAnnotation();
anno[countA].Location.TypeX = LengthType.Bound;
anno[countA].Location.X = arrayIndex;
anno[countA].Location.TypeY = LengthType.Bound;
anno[countA].Location.Y = 0;
anno[countA].Data = " ";
anno[countA].Font.Size = 4;
anno[countA].Font.Bold = false;
anno[countA].Color = Color.FromArgb(1, 1, 1);
modulePath = this.GetType().Module.FullyQualifiedName;
moduleDir = Path.GetDirectoryName(modulePath);
anno[countA].ImageFile = Path.Combine(moduleDir, "ArrUp.png");
countA++;
}
}
}
Thread.Sleep(5 * 60 * 1000);
ResetChart();
}
}
|
|
|
|
|
I want a program in the C # language to automate pharmacy I respond to
goldenman2424@yahoo.com
Iwait reply..................
|
|
|
|
|
Apologies, but I'm voting to remove this message even though it isn't "abusive" as such.
You have given someone's e-mail and spam-bots might pick it up. You should e-mail this guy directly if you need to contact him.
CCC solved so far: 2 (including a Hard One!)
37!?!! - Randall, Clerks
|
|
|
|
|
It sounds like you need to look here: Rentacoder[^]
P.S.: Don't include your email in any post; not unless your really like spam!
All those who believe in psycho kinesis, raise my hand.
|
|
|
|