Article View: alt.pl.comp.lang.csharp
Article #21753Re: jak to sie robi w C# ?
From: Selvin
Date: Mon, 20 Sep 2010 16:04
Date: Mon, 20 Sep 2010 16:04
79 lines
3933 bytes
3933 bytes
jeszcze inne wywolanie:
private void button1_Click(object sender, EventArgs e)
{
var csb = new SqlConnectionStringBuilder();
csb.IntegratedSecurity = true;
csb.DataSource = "BAZA2005";
using (var con = new SqlConnection(csb.ConnectionString))
{
con.Open();
var cmd = new SqlCommand("SELECT 2 iIle, 2.55 dNorma,
120.57 dCena, 0.2 dWsp, '_.iIle * _.dNorma * _.dCena * (1 + _.dWsp) *
100' sFormula", con);
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
dynamic param = new DynamicDataRow(reader);
//dynamic param = new ExpandoObject();
//param.iIle = 2;
//param.dNorma = 2.55M;
//param.dCena = 120.57M;
//param.dWsp = 0.2M;
try
{
//
MessageBox.Show(ScriptingInterface.ScriptProvider.RunScript(textBox1.Text,
param).ToString());
MessageBox.Show(ScriptingInterface.ScriptProvider.RunScript(param.sFormula,
param).ToString());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
}
a tak np zamieniamy sobie IDataRecord na dynamic
public class DynamicDataRow : DynamicObject
{
Dictionary<string, object> record_ = new Dictionary<string,
object>();
public DynamicDataRow(IDataRecord record)
{
for (int i = 0; i < record.FieldCount; i++)
record_[record.GetName(i)] = record[i];
}
public override bool TryGetMember(GetMemberBinder binder, out
object result)
{
return record_.TryGetValue(binder.Name, out result);
}
public override bool TrySetMember(SetMemberBinder binder,
object value)
{
record_[binder.Name] = value;
return true;
}
}
mozna jeszcze dodac cachowanie skryptu
static Dictionary<string, IScriptType> scriptcache = new
Dictionary<string, IScriptType>();
public static dynamic RunScript(string code, dynamic param)
{
if (!scriptcache.ContainsKey(code))
scriptcache[code] = new
ScriptingInterface.ScriptProvider(code).Script;
return scriptcache[code].RunScript(param);
}
Technical Details
Message-ID:
<679459a9-2df4-4fe8-b574-72f0024da8f8@g10g2000vbc.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed1.plix.pl!goblin2!goblin1!goblin.stu.neva.ru!postnews.google.com!g10g2000vbc.googlegroups.com!not-for-mailReferences:
<4c9721da$0$27026$65785112@news.neostrada.pl> <29a54593-9d92-4968-ba75-062ef28bbe4f@m1g2000vbh.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed1.plix.pl!goblin2!goblin1!goblin.stu.neva.ru!postnews.google.com!g10g2000vbc.googlegroups.com!not-for-mail From: Selvin <przemek.sulikowski@gmail.com> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: jak to sie robi w C# ? Date: Mon, 20 Sep 2010 09:04:51 -0700 (PDT) Organization: http://groups.google.com Lines: 81 Message-ID: <679459a9-2df4-4fe8-b574-72f0024da8f8@g10g2000vbc.googlegroups.com> References: <4c9721da$0$27026$65785112@news.neostrada.pl> <29a54593-9d92-4968-ba75-062ef28bbe4f@m1g2000vbh.googlegroups.com> NNTP-Posting-Host: 217.97.163.91 Mime-Version: 1.0 X-Trace: posting.google.com 1284998693 20187 127.0.0.1 (20 Sep 2010 16:04:53 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 20 Sep 2010 16:04:53 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: g10g2000vbc.googlegroups.com; posting-host=217.97.163.91; posting-account=R8EpSwoAAADeCYcG96LM5BAc_tdIdesQ User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3,gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit