|
Combine C & A or B & A. That's the simplest way. By combine I mean either the whole project, or just the code that relies on the other reference.
|
|
|
|
|
Combine them even though (strictly speaking) they have unrelated functionality? Thanks for your help!
|
|
|
|
|
Assuming each project doesn't really contain a single class - move the class that is offending out into a fourth project - that can then be referenced by the others as necessary.
___________________________________________
.\\axxx
(That's an 'M')
|
|
|
|
|
dae22000 wrote: C contains an error logging object, it is not passed an error logger as a method parameter.
But it could be... it could be.
Or why not as a constructor parameter? Or, if it's not required, perhaps as a property?
And what is an "eventing class"?
|
|
|
|
|
PIEBALDconsult wrote: what is an "eventing class"?
sounds like fun.
|
|
|
|
|
I prefer events without class.
|
|
|
|
|
The error logging class is a part of your infrastructure and should be a placed in a common location that should be refrenced by all other classes. It should not be dependent on any other dlls.
If there is no way to avoid a particular dependency, move that dependency into the common location(from B into say, D) as well. It is likely that some of your classes could need this new dependency in the future.
There's nothing left in my right brain and nothing right in my left brain. |
|
|
|
|
|
On further thought, perhaps project C shouldn't use the logger directly but instead raise events that contain the interesting information.
The application can then attach the logger to the instance of C. An additional benefit is that information from several instances of C can all be logged to the same log without them tripping over each other. This is how I log with my Windows Services.
|
|
|
|
|
Thanks all!
Have implemented a solution thats a bit of everything. Created an intermediary project which the two offending projects both reference. The first project passes delegates of its static method calls to the intermediary project, and the seconds project invokes the delegates on the intermediary project.
Again, thanks for your help
|
|
|
|
|
How come Math.Floor(0.3 / 0.1) returns 2.0??? I assume it is some sort of rounding issue. How can I fix this?
Edit: This is what I came up with: Math.Floor(Math.Round(0.3 / 0.1, 2)); Is there an easier way?
Thanks
modified on Tuesday, December 15, 2009 1:03 PM
|
|
|
|
|
It's because 0.3/0.1 returns a double, and there are all sorts of rounding problems associated with doubles.
Console.WriteLine(Math.Floor(0.3M / 0.1M)); uses decimal arithmatic, and you get the expected answer.
CCC solved so far: 2 (including a Hard One!)
37!?!! - Randall, Clerks
|
|
|
|
|
keefb is 100% correct. If you type "0.3 / 0.1" into the immediate window, it spits out 2.9999999999999996... Now, we all know that's pretty much "3", but if you do a Floor(), it rounds down to 2. As keefb said, use decimals and you'll get the right answer.
But if you need to work with doubles, or have other constraints, you could "hack" it by, say, adding 0.0000001 before going through the Floor()... Kind of like the stone-age trick of adding 0.5 before a truncation to simulate rounding up or down to an integer.
|
|
|
|
|
How can I get all the running process list from a remote IPs / LAN and send a request to stop a particular application/process using C#.
You suggestion required.....
Thanks
Md. Marufuzzaman
Don't forget to click [Vote] / [Good Answer] on the post(s) that helped you.
I will not say I have failed 1000 times; I will say that I have discovered 1000 ways that can cause failure – Thomas Edison.
|
|
|
|
|
|
Thanks for your prompt response.. Yes; It will work on windows system.. Thanks once again for the link..
Thanks
Md. Marufuzzaman
Don't forget to click [Vote] / [Good Answer] on the post(s) that helped you.
I will not say I have failed 1000 times; I will say that I have discovered 1000 ways that can cause failure – Thomas Edison.
|
|
|
|
|
I want to get the last element of a dictionary collection. The methods listed in the IDE for the class seem pretty sparse, looking online led me to this:
http://msdn.microsoft.com/en-us/library/ckzcawb8.aspx[^]
However these are listed as extension methods, and don't appear available to me in .Net 2.0. Is this in fact the case? If it is, is there no other way than to manually loop till the last element? Isn't that a little absurd? Or am I missing something obvious here?
As others have mentioned I can use SortedDictionary and dictionary.Values[dictionary.Count - 1]. Thanks all!
modified on Tuesday, December 15, 2009 10:50 AM
|
|
|
|
|
Just use dictionary.Values[dictionary.Count - 1]; .
|
|
|
|
|
Jim Crafton wrote: However these are listed as extension methods, and don't appear available to me in .Net 2.0. Is this in fact the case?
Yes.
Jim Crafton wrote: I want to get the last element of a dictionary collection
Dictionary collections are unsorted, just pairing a value with a unique key, there is a SortedDictionary collection(analogous to a Collection and a List) which sorts using a comparer (defaults on Key)
In the either case in .net 2.0, you'd need to iterate round and find the "Last" item, though what last is is underfined as it could be key, last added etc.
CCC solved so far: 2 (including a Hard One!)
37!?!! - Randall, Clerks
|
|
|
|
|
Treat it as an array -
dict.Values[dict.Count - 1]
Whoops, was beaten to it while typing. Must type faster
Bob
Ashfield Consultants Ltd
Proud to be a 2009 Code Project MVP
modified on Tuesday, December 15, 2009 11:07 AM
|
|
|
|
|
Doh! I'm an idiot for missing that, thanks. I didn't realize you could do that.
|
|
|
|
|
Dictionary will not guarantee the order of contents. So an item inserted at the last won't be the last element of dictionary. So it doesn't make sense to get the last item.
Best wishes,
Navaneeth
|
|
|
|
|
Correct. The question is invalid.
|
|
|
|
|
Hi Jim,
I'm late to the party here, but certainly agree with the consensus that a dictionary by its nature ain't got no "last."
I'll have to try the "convert to Array" thing, though, out of curiousity to see what it does internally.
While you can definitely say a 'SortedDictionary has a "last" : that may not be at all what you are looking for here which I assume, is not "last" in the sense of "last in the sort order."
I can see two strategies :
1. switch to some kind of queue or stack where you know "who's on first" ... and last ? ... from the get go
2. define a class that inherits from Dictionary, and overrides the Add method and then keep an internal variable updated with the last key (or key/value pair) added.
Here's a quick idea for scenario 2 :
public class FirstLastDictionary<K, V> : Dictionary<K, V>
{
public K firstKeyAdded { get; set; }
public K lastKeyAdded { get; set; }
public void Add(K theKey, V theValue)
{
if(firstKeyAdded == null) firstKeyAdded = theKey;
lastKeyAdded = theKey;
base.Add(theKey, theValue);
}
}
and a quick and dirty test : assumes you have a button named 'button1 on a form that calls this event handler :
private void button1_Click(object sender, EventArgs e)
{
FirstLastDictionary<string, int> myFLdict = new FirstLastDictionary<string, int>();
Random r = new Random();
for (int i = 0; i < 100; i++)
{
int rndValue = r.Next();
myFLdict.Add("key " + rndValue.ToString(), rndValue);
Console.WriteLine("adding : " + rndValue);
}
Console.WriteLine("firstkeyadded = " + myFLdict.firstKeyAdded);
Console.WriteLine("firstkeyadded value = " + myFLdict[myFLdict.firstKeyAdded]);
Console.WriteLine("lastkeyadded = " + myFLdict.lastKeyAdded);
Console.WriteLine("lastkeyadded value = " + myFLdict[myFLdict.lastKeyAdded]);
}
best, Bill
"Many : not conversant with mathematical studies, imagine that because it [the Analytical Engine] is to give results in numerical notation, its processes must consequently be arithmetical, numerical, rather than algebraical and analytical. This is an error. The engine can arrange and combine numerical quantities as if they were letters or any other general symbols; and it fact it might bring out its results in algebraical notation, were provisions made accordingly." Ada, Countess Lovelace, 1844
modified on Tuesday, December 15, 2009 4:52 PM
|
|
|
|
|
OK I think I must be prejudiced coming from a C++/STL background where you do have associative arrays and iterators that can give a first and last elements. I always assumed this was standard, and figured .net would have the same thing.
|
|
|
|
|
Hey folks,
I'm trying to write a video (multimedia) application. What I want is two video objects running video clips. Once the first one stops, the other fades in and than back.
I want to render the video images on a surface, but I'm having problems converting the video image to a Texture.
I Have an IVMRWindowlessControl9 (called windowlessCtrl) which is (obviously) my Video Mixing Renderer. Using the GetCurrentImage function, I'll be able to get a pointer to the current video image in memory.
windowlessCtrl.GetCurrentImage(out currentImage);
Now I need to convert the currentImage pointer (IntPtr) to a texture in order to render the image. Can anybody help me?
Thanks!
|
|
|
|