|
That's not how generics work unfortunately. You can't do this
GenericClass<firstclass> var1;
GenericClass<base> var2;
var2 = (GenericClass<base> )var1;
Your var1 & var2 variables are different types. One is a generic class using base as it's type member, and one is using FirstClass as it's type member, you can't cast one to the other, just because FirstClass is a subclass of Base. var1 isn't a subclass of var2. What generics effectively do is define a new class using the type you specified. So it effectively equates to this:
public class GenericClassUsingBase
{
public Base Item
{
get;
set;
}
}
public class GenericClassUsingFirstClass
{
public FirstClass Item
{
get;
set;
}
}
You'll see if you try and cast these you can't do that either:
GenericClassUsingFirstClass var1;
GenericClassUsingBase var2;
var2 = (GenericClassUsingBase)var1;
They are basically different types, just because they are using type parameters that subclass each other doesn't make them subclasses of themselves.
Simon
|
|
|
|
|
Thanks. Great explanation.
I guess I'm not the only one who bumps into this. Any known workarounds? Or rethink the whole implementation from scratch?
|
|
|
|
|
gnjunge wrote: Any known workarounds?
That kind of depends what you are trying to do.
If you are trying to treat generics of a class tree as a tree themselves, I suspect you are slightly misusing the idea of generic classes. You might be better defining explicit classes instead of generic ones, and then having them all inherit from the same interface or abstract class instead if you need that.
What is it you are trying to archive?
Simon
|
|
|
|
|
For now I made my own work around.
The code has changed multiple times, and I'm sure there was a reason for using generics. Have to check it when I have time.
|
|
|
|
|
C# 4.0 brings generic covariance[^]. While the current code will still not compile, inserting an interface will get you going.
public interface IGenericClass<out t=""> where T : Base { public T Item {get; } }
public abstract class GenericClass<t> : IGenericClass<t> {...}
var derived = new FirstImplementation();
IGenericClass<Base> baseInterface = derived;
</t></t></out>
C# 4.0 is still in CTP stage though.
|
|
|
|
|
|
Hi,
I want to add Rows bottom of the Grid but for some reason it goes here and there or always last but one.
MyGrid.Rows.Add();
Thanks
|
|
|
|
|
why do you want to add a row to the DGV?
You only get that output if you add records to your database, refresh, and display the data in DGV.
You have to remember that you dont edit the DGV, you edit your database!
You use the DGV to display data.
You can add and delete rows but not like you ask here, got it?
nelsonpaixao@yahoo.com.br
trying to help & get help
|
|
|
|
|
Anyway at last i got the solution !!
I just built a Data Table that is assigned to Data Grid as a Data Source so whenever i make changes in Data Table things are getting affected.
|
|
|
|
|
Hi all,
I want to call a crystal report from C# application
can i know the syntax and process please
waiting for your reply.
|
|
|
|
|
Hema Bairavan wrote: process please
Go to a bookstore and get a C# and crystal report book.
|
|
|
|
|
mr Navneeth,
I KNOW TO DO THAT
, it should be done by using the viewer,
but it is not working?
do you know how to do that?
|
|
|
|
|
Well why don't you post some code then.
Say what you expect it to do and what it actually does.
Do you get errors?
If so where and what errors?
...
The way you posed your question is open for the interpretation that you are asking us to completely explain how to show a CR with code and all.
At the very least you have to show that you actually tried it on your own.
|
|
|
|
|
Hema Bairavan wrote: I KNOW TO DO THAT
Well, what book did you buy?
Here is a walkthrough, enjoy
I are troll
|
|
|
|
|
it not hard, i thought it was. Almost the same way you do when display data in DGV.
You have to remember that the DGV accepts any kind of dataset regardless of the data scheme, you know? with CR you have to create a dataset (design time) that has a scheme that is 100% of the output of your Store Procedure (i trigger SP).
If you know to display data in a DGV from a triggered procedure is the same.
Use the cristalreportviewer like the DGV.
add cristalreportviewer to application, create cristalreport and dataset in designtime.
i assually run DGV and cristalreportviewer together
i can post the little code later, but is not about it.
nelsonpaixao@yahoo.com.br
trying to help & get help
|
|
|
|
|
Who has the code generator? Can generate C # code
|
|
|
|
|
1SmartCoder is an object to simple mapping (O/R mapping) code generation tool that lets you map and generate well designed Asp.net business, data objects and web pages.
Map objects and embed SQL and business rules
Generate .NET components and DotNetNuke Module in C# with a clean design
Customizable code generator with powerful Template IDE
Extendable special business rules generation with Tag in mapped objects and their attributes.
Support Microsoft Visual Studio 2005 and DotNetNuke 4.x
Do round trip development without losing any of your code changes
Generate common Membership web application with Department, User, Group/Role, Resource/Permission managetment, with it you can focus on the business logic development without trouble permission management.
more: http://www.1smartengine.com
|
|
|
|
|
tz_soul wrote: Who has the code generator?
The (working) brain.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
The computer.
Of one Essence is the human race
thus has Creation put the base
One Limb impacted is sufficient
For all Others to feel the Mace
(Saadi )
|
|
|
|
|
tz_soul wrote: One Who has the code generator, ? Ccan generate C # code.
Code Quote of the day.
The word "politics" describes the process so well: "Poli" in Latin meaning "many" and "tics" meaning "bloodsucking creatures."
जय हिंद
|
|
|
|
|
Who has the code generator?
You do. For C#, it's CSC.exe. You could always build your apps using the CodeDOM, but it's easier with csc.exe.
|
|
|
|
|
Pete O'Hanlon wrote: You could always build your apps using the CodeDOM, but it's easier with csc.exe.
Cmon Pete, be a man.
The word "politics" describes the process so well: "Poli" in Latin meaning "many" and "tics" meaning "bloodsucking creatures."
जय हिंद
|
|
|
|
|
string[] observations =new string[] {"walk","shop","clean"};
startProbability = new double[] { 0.6, 0.4 };
transitionProbability = new double[,]{{0.7, 0.3},{0.4, 0.6}};
emissionProbability = new double[,] {{0.1,0.4,0.5},{0.6,0.3,0.1} };
problem = new int[] { 0, 1, 2 };
these are the assigned values.. how to get these values as an input from the user... kindly help me out
|
|
|
|
|
You'll have to do some kind of string parsing using a delimiter. For a one dimensional array, assuming that the values in the array will not contain spaces, you can split on the space character.
public T[] ConvertToArray<t>(string s)
{
string[] arr = s.Split(' ');
T[] retArr = new T[arr.Length];
return Array.ConvertAll<string,>(arr, str => (T)Convert.ChangeType(str, typeof(T)));
}
</t>
For 2D arrays, you'll have to have another delimiter to separate dimensions, split on that (recursively?) and call ConvertToArray on the resulting split arrays.
|
|
|
|
|
thanks a lot...
the quieter u become more u hear
|
|
|
|