[หน้าฮี] "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:..." แก้ไขอย่างไร
No.2 @ 133918
ตอบความคิดเห็นที่ : 2 เขียนโดย : หน้าฮี เมื่อวันที่ 2019-07-22 11:35:17
รายละเอียดของการตอบ ::
Error : Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: ''object' does not contain a definition for 'Ass''
Code (C#)
public static IEnumerable<dynamic> IsModule()
{
var list = Enumerable.Repeat(new
{
Ass = 1,
Module = String.Empty
}, 0).ToList();
list.Add(new { Ass = 1, Module = "PO" });
list.Add(new { Ass = 2, Module = "SO" });
list.Add(new { Ass = 2, Module = "AR" });
list.Add(new { Ass = 2, Module = "AP" });
list.Add(new { Ass = 2, Module = "IC" });
list.Add(new { Ass = 2, Module = "GL" });
return list; //.ToList();
}
public static void GetValue()
{
dynamic lst = IsModule();
foreach (var item in lst)
{
Console.WriteLine(item.Ass);
}
}
แก้ไขอย่างไร
ปล.เป็น Dynamic Mod จำเป็น Tag : .NET, Class Library, LINQ, C#, VS 2017 (.NET 4.x), Windows
Date :
2019-07-22 13:17:37
By :
PhrayaDev
View :
1348
Reply :
32
@ หน้าฮี
ผมรันได้ปกติครับ (.NET Framework 4.5.2)
ไม่ได้แก้อะไร...ดัดแปลงแค่การแสดงผลแค่นี้
Code (C#)
// เหมือนเดิม
// ...
public static void GetValue()
{
dynamic lst = IsModule();
foreach (var item in lst)
{
Console.WriteLine(item.Ass + "({0})" + " / " + item.Module + "({1})", item.Ass.GetType().ToString(), item.Module.GetType().ToString());
}
Console.ReadLine();
}
ผลลัพธ์
Date :
2019-07-22 13:24:02
By :
PhrayaDev
ผมลืมบอกไปครับว่าผม รันข้าม Assembly และใช้ .NET Core 2.2
Assembly AAA
Code (C#)
public static IEnumerable<dynamic> IsModule()
{
var list = Enumerable.Repeat(new
{
Ass = 1,
Module = String.Empty
}, 0).ToList();
list.Add(new { Ass = 1, Module = "PO" });
list.Add(new { Ass = 2, Module = "SO" });
list.Add(new { Ass = 2, Module = "AR" });
list.Add(new { Ass = 2, Module = "AP" });
list.Add(new { Ass = 2, Module = "IC" });
list.Add(new { Ass = 2, Module = "GL" });
return list; //.ToList();
}
Assembly BBB (Caller )
Code (C#)
public static void GetValue()
{
dynamic lst = IsModule();
foreach (var item in lst)
{
Console.WriteLine(item.Ass);
}
}
Debug เห็นหมดทุกฯอย่าง เป็นยิ่งกว่าปรกติ แต่อ่านค่าไม่ได้
Date :
2019-07-22 15:54:26
By :
หน้าฮี
Date :
2019-07-22 15:57:53
By :
หน้าฮี
ทดสอบได้เหมือนกัน
Code (C#)
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;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static IEnumerable<dynamic> IsModule()
{
var list = Enumerable.Repeat(new
{
Ass = 1,
Module = String.Empty
}, 0).ToList();
list.Add(new { Ass = 1, Module = "PO" });
list.Add(new { Ass = 2, Module = "SO" });
list.Add(new { Ass = 2, Module = "AR" });
list.Add(new { Ass = 2, Module = "AP" });
list.Add(new { Ass = 2, Module = "IC" });
list.Add(new { Ass = 2, Module = "GL" });
return list; //.ToList();
}
public static void GetValue(ListBox ls)
{
dynamic lst = IsModule();
foreach (var item in lst)
{
ls.Items.Add(item.Ass);
}
}
private void Form1_Load(object sender, EventArgs e)
{
GetValue(listBox1);
}
}
}
ปล.
อ้าวกรรม คนละ assembly
reference + using มันเข้ามาไม่ได้เหรอครับ
ประวัติการแก้ไข 2019-07-22 16:39:02
Date :
2019-07-22 16:22:46
By :
Chaidhanan
@ท่านพระยาเทพ
ผมมีอยู่ 2 เหตุผลที่ต้องใช้ .NET Core
1. ฟรี
2. รันได้ทุก OS โดยเฉพาะอย่างยิ่ง Linux/MaxOS/Unix
--- ผมลองรันทดสอบบน Linux Ubonto 18.04 LTS ผ่านฉลุย
--- ผมไม่ได้ลองรันทดสอบบน MaxOS แต่คิดว่าไม่น่าจะมีปัญหาอะไรตามมา
--- ผมไม่ได้ลองรันทดสอบบน Unix AIX ผมคิดว่าน่าจะได้แต่คงต้องใช้พลังมากหน่อย (ได้ก็ดีไม่ได้ก็ไม่เป็นไร)
จากที่กล่าวมาข้างต้น ต่อไปผมจะให้ความสำคัญกับ Linux/MySQL/FireBird/MariaDB
Date :
2019-07-22 17:12:33
By :
หน้าฮี
จาก #NO5
ทำได้แล้วครับ
.NET Core 2.2 มันทำถูกต้องแล้ว (เห็นแต่ใช้งานไม่ได้ ) จริงฯแล้วต้องไม่ให้เห็นเลยด้วยซ้ำไป
Code (C#)
Code (C#)
[cs]using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Dynamic;
//
//***** ที่ไม่ได้มันถูกต้องแล้ว แสดงว่า .NET Core 2.2
//
[assembly: InternalsVisibleTo("AA", AllInternalsVisible =true)] // assembly name = AA, namespace AA.WebApp
namespace BB_Database.Models.Settings.IS
{
public static class ISBook2Express
{
public static IEnumerable<dynamic> IsModule()
{
var list = Enumerable.Repeat(new
{
Ass = 1,
Module = String.Empty
}, 0).ToList();
list.Add(new { Ass = 1, Module = "PO" });
list.Add(new { Ass = 2, Module = "SO" });
list.Add(new { Ass = 2, Module = "AR" });
list.Add(new { Ass = 2, Module = "AP" });
list.Add(new { Ass = 2, Module = "IC" });
list.Add(new { Ass = 2, Module = "GL" });
return list; //.ToList();// list.Cast<dynamic>();//.ToList();
}
public static void GetValue()
{
dynamic lst = IsModule();
foreach (var item in lst)
{
Console.WriteLine(item.Ass);
}
}
}
}
Project AA โค๊ดจริง
<strong>Code (C#)</strong>
[cs]namespace AA.WebApp //Assembly Name จริง ============================= AA
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
dynamic varTest = BB_Database.Models.Settings.IS.ISBook2Express.IsModule();
foreach (var item in varTest)
{
int ia = item.Ass;
string ib = item.Module;
}
}
}
}
[/cs]
Date :
2019-07-22 21:25:57
By :
หน้าฮี
อธิบายสั้นฯ ตัวแปร
Assembly BB (ถูกเรียกโดย AA ซึ่งมาจากแอฟริกาโน่นแน่ะ)
ตัวแปรคืนค่ากลับ list มันเป็น anonymous type
หมายความว่า ตัวมันเองยังไม่รู้เลยว่าตัวมันเองจะมีค่าเป็นอะไร อาจจะเป็น int16, int32, string, etc.. แล้วแต่ฟ้ากำหนด
-- จู่ฯ Assembly AA มาถามว่า ทวดของทวดของทวด คุณชื่ออะไร BB ตอบว่า ตรูยังไม่รู้เลยว่าตรูชื่ออะไร แล้วตรูจะตอบเอ็งได้อย่างไร
ประมาณนั้น
Assembly AA (ไปเรียก BB)
Code (C#)
var list = Enumerable.Repeat(new
{
Ass = 1,
Module = String.Empty
}, 0).ToList();
list.Add(new { Ass = 1, Module = "PO" });
list.Add(new { Ass = 2, Module = "SO" });
list.Add(new { Ass = 2, Module = "AR" });
list.Add(new { Ass = 2, Module = "AP" });
list.Add(new { Ass = 2, Module = "IC" });
list.Add(new { Ass = 2, Module = "GL" });
return list; //.ToList();// list.Cast<dynamic>();//.ToList();
//list เป็นตัวแปรประเภท anonymous type แปลเป็นไทยได้ว่า เอ๋อเอ๋อ ยุงบินผ่านหน้าก็หัวเราะ/สลับร้องไห้ได้ ประมาณนั้น
//ที่ได้ก็เพราะโดนบังคับ เช่น อายุ 9 ขวบ แล้วโดนสั่งให้มีผัวเป็นตัวเป็นตน
//[assembly: InternalsVisibleTo("AA", AllInternalsVisible =true)]
//มันฝืนธรรมชาติ
Date :
2019-07-22 21:46:11
By :
หน้าฮี
แจ่ม
ผมก็เพิ่งผ่านเหมือนกัน ไม่ได้ใช้ attribute แต่เป็น reflection
ตามที่มันบอก ''object' does not contain a definition for 'Ass'' มันไม่ contain ก็ไปเพิ่ม definition(property) ลงใน Assembly ของ Library ให้มันมองเห็นจาก Caller
IEnumerable ไม่มี property ชื่อ Ass แต่ Ass เป็นแค่ Element
Code (C#)
private static List<int> ass;
private static List<string> module;
public static void IsModule()
{
var list = Enumerable.Repeat(new
{
Ass = 1,
Module = String.Empty
}, 0).ToList();
list.Add(new { Ass = 1, Module = "PO" });
list.Add(new { Ass = 2, Module = "SO" });
list.Add(new { Ass = 2, Module = "AR" });
list.Add(new { Ass = 2, Module = "AP" });
list.Add(new { Ass = 2, Module = "IC" });
list.Add(new { Ass = 2, Module = "GL" });
// ลองแปลงร่างและแยกร่างดู
ass = list.Select(c => c.Ass).ToList();
module = list.Select(c => c.Module).ToList();
//return list; //.ToList();
}
// ใช้ตัวนี้แทน แต่ต้องเรียก IsModule() ก่อน ...กลับไปกลับมาเป็น reflection
public static List<int> Ass { get { return ass; } }
public static List<string> Module { get { return module; } }
ขอบคุณสำหรับการแบ่งปันครับ
Date :
2019-07-22 23:59:31
By :
PhrayaDev
@ ท่านพญาเทพ #No. 12
วิธีการแก้ปัญหาของคุณ เป็นธรรมชาติดีครับ เดี๋ยวผมจะมาเล่าให้ฟังว่าทำไม?
---ผมถึงจำเป็นต้องใช้ dynamic
-- ก่อนอื่นรบกวนช่วยแก้ไข #NO 10 ด้วยครับ ตัวแสดงผลภาษา C# ของ Thaicrete.com มันดูเพี้ยนฯ
อันนี้เป็นตัวอย่าง ที่ผมทำไว้อ้างอิงในภายหลัง ครบเครื่องเรื่อง Delegate/Lambda
Code (VB.NET)
Imports System.Collections.Generic
Public Class WL_ERP_Calculator
Private Delegate Function DelegateFormula(ByVal m As Double, ByVal n As Double) As Double
Private Shared Formula As New Dictionary(Of String, DelegateFormula)() From {{"+", Function(m, n) m + n},
{"-", Function(m, n) m - n},
{"*", Function(m, n) m * n},
{"/", Function(m, n) m / n}
}
''' <summary>
''' Example : Dim ret = Calculate(12.50, 10.00, "-")
''' /Result = 2.50
''' </summary>
Public Shared Function Calculate(ByVal a As Double, b As Double, Optional ByVal Oper As String = "+") As Double
Dim retValue As Double = 0.0
If (("+-*/").Contains(Oper)) AndAlso (Not (Oper = "/" AndAlso b = 0)) Then
retValue = Formula(Oper).Invoke(a, b)
End If
Return retValue
End Function
End Class
Date :
2019-07-23 04:30:19
By :
หน้าฮี
ผมจะเอามาใช้ตรงนี้ (รองรับทุกฯ Object/รองรับทุกฯ Expressioin)
ผมมี บัญชีโปรแกรมต้นแบบอยุ่ 3 ตัว แต่ละตัวก็มีเทคนิคแตกต่างกันไป
1. Express
2. CD Organizer
3. โปรแกรมถูกเขียนขึ้นมาใช้งานจริงในหลายฯบริษัท (โดยเจ้าหน้าที่ของ MS ประเทศไทย)
มันถึงเวลาแล้วที่ผมจะยำ 1/2/3 ให้เป็นหนึ่งเดียว (ยกแต่สิ่งดีดีมา)
-- ผมมีโครงสร้างโปรแกรมที่แข็งแกร่งพอเพียง มากล้นเกินไป จะพูดแบบนี้ก็ไม่ผิดนัก
ปล. ผมจำเป็นต้องรู้บัญชีอย่างยิ่งยวด (Dr/Cr) จนถึงโน่น ออกงบทดลอง ---> งบดุล/งบกำไร-ขาดทุน
รู้ต้องรู้จริงไม่อย่างนั้นแล้วจะเขียนโปรแกรมไม่ได้
Date :
2019-07-23 04:57:01
By :
หน้าฮี
ตัวอย่างโตรงสร้างโปรแกรมที่แข็งแกร่ง ห้ามนอกลู่นอกทาง JavaScript
--- ทุกฯอย่างต้องใหม่หมด ล้ำสมัยอทิเช่น Bootstrap >= 4
--- ทุกฯอย่างห้ามนอกลู่ (Interface)
Code (JavaScript)
//JavaScript Core WLS Framework
var wls = wls || {};
wls.jc = wls.jc || {};
wls.String = wls.String || {};
wls.HTML = wls.HTML || {};
wls.jc = {
alert: null,
confirm: null,
};
wls.HTML = {
ShowHide: null, //Display Block OR None
ZeroText: null, //String.Empty
ZeroDec0: null, //0
ZeroDec1: null, //0.0
ZeroDec2: null, //0.00
ZeroDec3: null, //0.000
ZeroDec4: null //0.0000
}
/**
* @param {string} title หัวเรื่องข้อความเตือน
* @param {string} content ข้อความแจ้งเตือน
* @param {function} closeCallbackFnc เมื่อคลิกปุ่ม Close จะทำอะไรก็ว่ากันไป
* @param {string} btnCloseText ข้อความบนปุ่ม Close
*/
wls.jc.alert = function (title, content, closeCallbackFnc, btnCloseText) {
$.alert({
//theme: 'material', // 'material', 'bootstrap'
title: title || 'ข้อความแจ้งเตือน',
content: content || 'โปรดระมัดระวัง ข้อมูลสำคัญกว่าเมีย',
buttons: {
btnClose: {
text: '<span style="padding-left:20px;padding-right:20px">' + (btnCloseText || 'รับทราบ') + '</span>',
btnClass: 'btn-warning',
action: closeCallbackFnc || function () { }
}
},
backgroundDismiss: true,
escapeKey: true,
});
}
/**
* @param {string} x XXX
* @param {string} y YYY
* @param {function} fncCallback เมื่อคลิกปุ่ม Close จะทำอะไรก็ว่ากันไป
*/
wls.jc.confirm = function (x, y, fncCallback) {
//TODO;
}
Date :
2019-07-23 06:02:27
By :
หน้าฮี
พึ่งนึกอะไรได้เดี๋ยวลืม ฝากแปะเอาไว้ก่อนครับ
Code (JavaScript)
var results = await fuckAJAX(assAJAX);
async function fuckAJAX(objAJAX) {
let result = null;
try {
result = await objAJAX;
return result;
} catch (error) {
console.error(error);
}
}
function assAJAX(type, url) {
$.ajax({
url: url,
type: type || 'POST',
data: {
JVCode: "JV2019-07-01"
},
success: function (data) {
return data;
},
error: function (jqXHR, textStatus, errorThrown) {
return null;
}
});
}
Date :
2019-07-23 07:23:47
By :
หน้าฮี
Date :
2019-07-23 08:23:07
By :
หน้าฮี
Date :
2019-07-23 08:26:43
By :
หน้าฮี
Date :
2019-07-23 08:40:43
By :
หน้าฮี
@ท่านพระยาเทพ
@มหาท่านChaidhanan
วันนี้ผมเบื่อมากฯ เงินไม่มีติดกระเป๋าแม้แต่บาทเดียว ล้านปัญหาประดังสุมเข้ามาพร้อมฯกัน ถ้าเป็นคนอื่นคงจะฆ่าตัวตายไปแล้ว
ผมเลยมานั่งแหย่ .NET Core 3.0 ตั้งแต่บ่ายโมง ยัน ณ.เวลานี้ (ใช้เวลาไม่กี่ชั่วโมงผมก็ ปรุโปร่ง )
ผลลัพธ์ที่ได้เป็นดังนี้ เลยเอามาเล่าให้ฟังครับ
--- ผมพูดได้เต็มปากเต็มคำว่า Angular Version 100 ผมก็ไม่ใช้ React Version 101 ผมก็ไม่ใช้ ไม่อยู่ในสายตาอีกต่อไปแล้ว พูดแล้วไม่คืนคำแน่นอน
มีปุ่มเขียว 3 ปุ่ม ก่อนและหลังการกดปุ่ม "ลองข้างหลังดูซิ "
ผลการทดสอบ ใช้คำว่าเหนืออัศจรรย์โลกนี้คงไม่มีใครว่า (สังเกตุดูดีดีนะความเหมือนบนความแตกต่าง)
ก่อน
หลัง
@ท่านพระยาเทพ
@มหาท่านChaidhanan
ผมพูดจริงฯนะ คุณทั้งสองคนกล้าให้ผมยืมเงิน คนละ 2,000 บาทไหม?
Date :
2019-07-24 18:52:48
By :
หน้าฮี
จาก #NO 23
สมมุติว่า คุณทั้งสองคนให้ผมยืมเงิน "แบบหน้าด้านด้าน(ผม) "
เงินที่ได้ผมจะเอาไปทำอะไรรู้ไหม?
--- ผมอยากพับดอกบัว 50 ดอก ผมตั้งใจว่าแต่ละดอกลายพับต้องไม่เหมือนกัน
--- ทำไปทำไม
------ ผมจะเอาไปถวายพระ
Date :
2019-07-24 19:01:47
By :
หน้าฮี
ต่อเนื่องมาจากหัวข้อที่ผ่านมา เอาให้เห็นชัดชัดชัด
Code (JavaScript)
function Hello() {
$("#btnAssResult1").val("พี้ได้หลังก็จะไม่ลืมหน้า");
$("#btnAssResult2").val("พี้ได้หน้าพี้ก็จะไม่ลืมหลัง");
return "Hi";
}
Code (C#)
@page "/"
<h1>Hello, world!</h1>
Welcome to your new app.
<SurveyPrompt Title="How is Blazor working for you?" />
<h1>ลองจิ้มดูซิ ชาตินี้ต้องลอง</h1>
<input type="button" class="btn btn-success" onclick="Hello();" value="ลองข้างหลังดูซิ" id="btnAss" />
<input type="button" class="btn btn-success" value="ได้หน้าอย่าลืมหลัง" id="btnAssResult1" />
<input type="button" class="btn btn-success" value="ได้หลังอย่าลืมหน้า" id="btnAssResult2" />
Date :
2019-07-24 19:06:30
By :
หน้าฮี
จากหัวข้อที่ #25 กระผมมั่นใจว่า คุณทั้งสองคนเข้าใจ คนอื่นอาจจะไม่เข้าใจ
-----
-----
-----
ปล. สำหรับผม หายใจเข้า แล้ว หายใจออก มันยากเสียยิ่งกว่าการเขียนโปรแกรม
Date :
2019-07-24 19:09:39
By :
หน้าฮี
No.13-17, 20-22
Profile แน่นจริงครับ
18-19
ชีวิตมีทั้งศาสตร์และศิลป์
https://www.youtube.com/watch?v=SP8L-Nw3hNE
23-26
ไตรศอ ยังไม่สมประกอบ...ขอบคุณสำหรับข่าวความคืบหน้าครับ
ดูแล้วเกิดการเปรียบเทียบขึ้นในหัว
หน้าฮี เมื่อวันที่ 2019-07-26 09:52:28
รายละเอียดของการตอบ ::
ขอถามหน่อยครับ มีวิธีที่ดีกว่านี้ไหม ตรง
//สั้นดี *****
Generic Type
Code (C#)
public static string assDivision(JObject args)
{
//ยาวเกินไป
var x1Value = args.GetValue("key1", StringComparison.OrdinalIgnoreCase).Value<string>();
var x2Value = args.GetValue("key2", StringComparison.OrdinalIgnoreCase).Value<int>();
var x3Value = args.GetValue("key3", StringComparison.OrdinalIgnoreCase).Value<DateTime>();
//ยาวเกินไป
//สั้นดี *****
var x4Value = assValue<string>(args, "key4");
var x5Value = assValue<DateTime>(args, "key5");
var x6Value = assValue<int>(args, "key6");
//สั้นดี *****
return string.Empty;
}
private static T assValue<T>(JObject args, string key)
{
return (T)Convert.ChangeType(args.GetValue(key, StringComparison.OrdinalIgnoreCase).Value<T>(), typeof(T));
}
ถ้าดีคือสั้น ผมว่าคงไม่มีแล้วครับ
จริงๆ ผมอยากใช้แบบนี้
Code (C#)
Func<string, JObject, T> Val13<T> = (s, j = JObj) => {return j.GetValue(s, StringComparison.OrdinalIgnoreCase).Value<T>();};
var x1 = Val13<string>("key1");
var x2 = Val13<int>("key2");
var x3 = Val13<DateTime>("key3");
Func<JObject, int, T> Val46<T> = (j = JObj, i) => {return j.GetValue(i, StringComparison.OrdinalIgnoreCase).Value<T>();};
var x4 = Val46<string>(i:3);
var x5 = Val46<DateTime>(i:4);
var x6 = Val46<int>(i:5);
แต่ผมไม่ทัน .NET / .NET ไม่ Support ความต้องการนี้ จะเอาจริงต้องขี่หลังเสือ(Override) ขอบาย 55
สุดท้ายออกมาแบบนี้ครับ
Code (C#)
static void Main()
{
dynamic[] x = new dynamic[]{
Val16<string>("key1"),
Val16<int>("key2"),
Val16<DateTime>("key3"),
Val16<string>("key4"),
Val16<DateTime>("key5"),
Val16<int>("key6")
};
for (int i = 0; i < x.Length; i++)
{
Console.WriteLine(x[i]);
}
Console.ReadKey();
}
private static T Val16<T>(string key)
{
JObject j = new JObject();
return j.GetValue(key, StringComparison.OrdinalIgnoreCase).Value<T>();
}
// omitted parts
public class JObject {...}
public class data {...}
output :
ประวัติการแก้ไข 2019-07-27 02:02:15 2019-07-27 02:03:59 2019-07-27 02:15:48
Date :
2019-07-27 02:00:17
By :
PhrayaDev
@PhrayaDev
JObject มาจากนี่ครับ
Code (C#)
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Code (C#)
private static T Val16<T>(string key)
{
JObject j = new JObject();
return j.GetValue(key, StringComparison.OrdinalIgnoreCase).Value<T>();
}
public void GenericMethod<T>(T SexInput) { }
GenericMethod<int>(123); //Don't need the <>.
GenericMethod(123); //Is enough
ผมนี้ผมไม่ได้เขียนเองแต่ผมได้มาจาก อินตาเนต พอดีผมตาไวและรู้จักสังเกตุ
มันคือ Dynamic Class/Dynamic Property
Code (VB.NET)
Imports System.Dynamic
If True = True Then
Dim epdObj As New ExpandoObject()
Dim p = TryCast(epdObj, IDictionary(Of String, Object))
p("A") = "หอย"
p("B") = "งาม"
p("C") = "จริง"
If p.Count > 0 Then
MsgBox(p.Item("A")) 'Result หอย
MsgBox(p.Item("น่าเย็ด"))
End If
End If
If True = True Then
Dim lstEPDObj As New List(Of Object)
Dim Columns As Integer = 4
For r As Integer = 0 To 10
Dim epdObj As New ExpandoObject()
Dim p = TryCast(epdObj, IDictionary(Of String, Object))
For c As Integer = 0 To Columns - 1
p("dynObj" + c.ToString()) = "Value-" + r.ToString()
Next
lstEPDObj.Add(epdObj)
Next
If lstEPDObj.Count > 0 Then
MsgBox(lstEPDObj(7).dynObj2()) 'Result Value-7
MsgBox(lstEPDObj(3).น่าเย็ด())
End If
End If
จริงฯแล้วจุดประสงค์หลัก ผมต้องการเอาไปใช้งานกับ WebAPI/JavaScript Client
และคนที่จะเขียนตรงนี้ไม่ใช่ผม ผมจึงต้องสร้างรูปแบบขึ้นมา
คนที่จะเขียน ไม่มีความรู้ห่าอะไรเลย HTML/CSS/JavaScript/C#/VB/etc และไม่ได้เขียนโปรแกรมาหลายสิบปีแล้ว
แต่สิ่งที่เขามีคือ เคยเขียน FoxPro/Visual FoxPro และ มีใจ/มีหัวใจ
--- เขียน SQL Query ได้คล่องแคล่วปานสายน้ำไหล
--- มีความรู้ด้านบัญชีอย่างดีเลิศ มีเมียเป็นนักบัญชี
ผมจะใช้องค์ความรู้ทั้งหมดที่ผมมีถ่ายทอดให้เขา โดยใช้เวลาไม่เกิน 7 วัน เขาน่าจะช่วยผมเขียนโปรแกรมได้ดี/ดีมาก/ดีสุดสุด
ผมสร้างคนขึ้นมาได้ ผมต้องใส่จิตวิญญาณลงไปได้ด้วยเช่นกัน ครับ
Date :
2019-07-28 05:31:50
By :
หน้าฮี
@ท่านพระยาเทพ, มหาท่าน Chaidhanan
รูปงานที่ทำ ผมเอามาลง มันก็แค่เสี้ยวเดียว มันทำให้เสียวและทำให้ Profile ดูดีขึ้นจริงหรือ? +55555
ขาดเหลืออะไร? มีอะไรจะขอผมไหม? อทิเช่น UnDocuments
Date :
2019-07-30 10:22:11
By :
หน้าฮี
Load balance : Server 00