|
Looks like it's part of a much larger discussion that's going to take a while to make it into the language (if it ever does):
Champion "Type Classes (aka Concepts, Structural Generic Constraints)" · Issue #110 · dotnet/csharplang · GitHub[^]
Meanwhile, you can "fake" it by using Jon Skeet's generic operators from the MiscUtil project:
Generic Operators[^]
It hasn't been updated since 2009, but the concept still works.
For example:
using System.Linq.Expressions;
public static class GenericOperators<T>
{
public static readonly Func<T, T, T> Add = Create(Expression.Add);
public static readonly Func<T, T, T> Subtract = Create(Expression.Subtract);
public static readonly Func<T, T, T> Multiply = Create(Expression.Multiply);
public static readonly Func<T, T, T> Divide = Create(Expression.Divide);
private static Func<T, T, T> Create(Func<Expression, Expression, BinaryExpression> body)
{
try
{
Type typeT = typeof(T);
var left = Expression.Parameter(typeT, "left");
var right = Expression.Parameter(typeT, "right");
if (typeT.IsEnum)
{
Type enumType = Enum.GetUnderlyingType(typeT);
var x = Expression.Convert(left, enumType);
var y = Expression.Convert(right, enumType);
Expression op = body(x, y);
if (op.Type == enumType) op = Expression.Convert(op, typeT);
return Expression.Lambda<Func<T, T, T>>(op, left, right).Compile();
}
return Expression.Lambda<Func<T, T, T>>(body(left, right), left, right).Compile();
}
catch (InvalidOperationException ex)
{
string message = ex.Message;
return delegate { throw new InvalidOperationException(message); };
}
catch (ArgumentException ex)
{
string message = ex.Message;
return delegate { throw new InvalidOperationException(message); };
}
}
} Of course, it wouldn't help much in this case, because you'd still need to convert to a double or decimal to call Math.Floor .
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
how to fix invalid token error in c# application in visual studio ?
|
|
|
|
|
We can't tell you - remember that we can't see your screen, access your HDD, or read your mind - we only get exactly what you type to work with. And you haven't given us anything to work with!
Start by looking at the line that Visual Studio is complaining about - if you double click the error message in the Errors pane it will "jump" right to it - and check for any red lines underneath stuff.
Then look at the lines above and below - quite often a problem shows up because you did something wrong earlier and VS only just noticed.
If you can't spot the problem, then show us the relevant code fragment: the line VS is complaining about, plus a dozen lines above and below for context. Be sure to tell us exactly which line teh problem is found on, and any other info that you think might help.
The better your question, the better our response - so help us to help you!
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Learn how to use the debugger.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
I have been working on a small application to get fingerprints after 3 scanned. I used the ZKFingerSDK and when trying to get the register finger prints it brings the image back as black. I am using the ZK9500 device
This is what I tried:
if (RegisterCount >= REGISTER_FINGER_COUNT && !bIdentify)
{
RegisterCount = 0;
ret = GenerateRegisteredFingerPrint();
if (zkfp.ZKFP_ERR_OK == ret)
{
ret = AddTemplateToMemory();
if (zkfp.ZKFP_ERR_OK == ret)
{
string fingerPrintTemplate = string.Empty;
zkfp.Blob2Base64String(newRegTmp, cbCapTmp, ref fingerPrintTemplate);
newRegTmp = zkfp.Base64String2Blob(fingerPrintTemplate);
Bitmap bmp2;
MemoryStream ms2 = new MemoryStream();
BitmapFormat.GetBitmap(newRegTmp, mfpWidth, mfpHeight, ref ms2);
bmp2 = new Bitmap(ms2);
this.pictureBox1.Image = bmp2;
Console.WriteLine("finger print" + fingerPrintTemplate);
textRes.AppendText("merged " + fingerPrintTemplate + "\n");
}
}
}
private int GenerateRegisteredFingerPrint()
{
return fpInstance.GenerateRegTemplate(RegTmps[0], RegTmps[1], RegTmps[2], newRegTmp, ref cbRegTmp);
}
private int AddTemplateToMemory()
{
return fpInstance.AddRegTemplate(iFid, newRegTmp);
}
|
|
|
|
|
You've already got this posted in QA: don't shotgun the site with the same thing, it wastes effort and that annoys people.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
The QA version is the repost, and has now been closed.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Was the subject black? What does a "black image" look like?
The Master said, 'Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it.'
― Confucian Analects
|
|
|
|
|
Zaphod Beeblebrox: "Every time you try and operate these weird black controls that are labeled in black on a black background, a little black light lights up in black to let you know you've done it"
Just like that is what a black image looks like.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
And there was me thinking it was a picture of a red door[^].
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Can't sense cheese doodle fingers though.
The Master said, 'Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it.'
― Confucian Analects
|
|
|
|
|
i want use a some scripts perl in c#, but i should convert perl scripts to .exe file(i search and see this way), but i dont know who i can do? thanks
|
|
|
|
|
You're going to have to explain in a lot more detail exactly what you are trying to do: remember that we can't see your screen, access your HDD, or read your mind - we only get exactly what you type to work with.
And I for one have no idea how you propose to use them from C#, or why.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
|
Hi, I'm trying to make a solution in visual studio called "select all schedule views and export them". Originate a button and a panel in revit, so that when pressed it appears a check list box to select the schedules views. I am trying to select all the schedules through a CHECK LIST BOX. First I used a filtered element collector to select all the schedules, then I tried the checklistbox.add method,and checked list box.data source but nothing appears when I start the method and open revit. Has anyone worked with chekc list box as a revit button? how does check list box works to select items?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.IO;
using Form = System.Windows.Forms.Form;
using System.Text.RegularExpressions;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.UI.Selection;
using Application = Autodesk.Revit.ApplicationServices.Application;
namespace Schedules_DuplicateRename
{
public partial class Formulario_Schedules_Export : Form
{
private Document doc;
private UIApplication uiapp;
private UIDocument uidoc = null;
private IEnumerable<ViewSchedule> col;
private string _export_folder_name;
private string _ext;
private ViewScheduleExportOptions opt;
private UIApplication Application;
public Formulario_Schedules_Export()
{
InitializeComponent();
}
public Formulario_Schedules_Export(UIDocument uIDocument)
{
InitializeComponent();
uidoc= uIDocument;
}
private void button1_Click(object sender, EventArgs e)
{
Dispose();
}
private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Document doc = uidoc.Document;
List<ViewSchedule> sched_list = new List<ViewSchedule>(new FilteredElementCollector(doc).OfClass(typeof(ViewSchedule)).Cast<ViewSchedule>();
checkedListBox1.DataSource = sched_list;
checkedListBox1.DisplayMember = "Name";
}
}
}
|
|
|
|
|
Let's assume I have a string with a simple arithmetic expression (only additions, subtractions, multiplications and parentheses are allowed):
"2 + 5 x 1024 - (32 x 512 - 16 x 14) + 256"
Is there a ready-made function or library to parse the result, as an int, of this expression?
|
|
|
|
|
|
|
|
|
You're welcome!
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
a hack:
DataTable dtable = new DataTable();
public double? EvalExpr(string expr, string filter = "")
{
dtable.Clear();
object result;
try
{
result = dtable.Compute(expr, filter);
}
catch(Exception ex)
{
throw new InvalidOperationException(ex.Message);
}
if (result == null) return null;
return Convert.ToDouble(result);
} Sample call:
double? result = EvalExpr("((2 + 5) * 1024) - (32 * 512 - 16 * 14) + 256"); See: [^]
Note that a nullable 'double is returned here since the other possible numeric types can be safely cast to 'double. Note the use of 'Convert is required: a simple cast will not work !
«Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot
modified 18-Aug-19 8:29am.
|
|
|
|
|
Lately i have stumbled upon a Library called mXparser which i think can be useful for your cause.It gives you a lot of flexibility, such as variables, functions, constants, operators.You can check it out.
mXparser – Math Expressions Parser for JAVA Android C# .NET/MONO/Xamarin – Mathematical Formula Parser / Evaluator Library | JAVA, Android, .NET/MONO (.NET Framework, .NET Core, .NET Standard, .NET PCL, Xamarin.Android, Xamarin.iOS), Common Language[^]
Hope it was helpful.
|
|
|
|
|
I'm using the 2015 version of visual studio C#.
I was told that the 2017 version was not stable in places but there are some nice features I'd like to use in the 2017 version.
Does anyone know of a any recent releases of visual studio. Hopefully the next release is more stable.
Brian
|
|
|
|
|
Well ... Visual Studio 2019[^]
I skipped 15 and 17 because they were a little flaky in places compared to 13, but 19 seems pretty stable.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|