public IUserInfo GetUserByID(int userId)
{
IUserInfo userinfo= EntityBuilder.CreateEntity<IUserInfo>();
userinfo.ID = userId;
userinfo.Name = "姓名_" + userId;
userinfo.Birthday = new DateTime(1980, 1, 1);
return userinfo;
}
using System;
namespace NetLib
{
public interface IUserInfo
{
DateTime Birthday { get; set; }
int ID { get; set; }
string Name { get; set; }
}
}
IUserInfo userinfo= EntityBuilder.CreateEntity<IUserInfo>();
Func<int, Object> fun;
CppUserInfo GetUserByID(int userId)
{
//调用.NET方法,得到结果
MethodInfo^ method = dotnetObject->GetType()->GetMethod("GetUserByID", BindingFlags::Public | BindingFlags::Instance);
Func<int, Object^>^ fun = (Func<int, Object^>^)Delegate::CreateDelegate(Func<int, Object^>::typeid, this->dotnetObject, method);
Object^ result = fun(userId);
//转换托管类型数据到本机结构体
Func<String^, Object^>^ entityProp =EntityHelper::EntityCallDelegate(result);
CppUserInfo user;
user.ID = (int)entityProp("ID");
user.Name = (String^)entityProp("Name");// MarshalString((String^)entityProp("Name"));
user.Birthday = Convert2CppDateTime((DateTime^)entityProp("Birthday"));
return user;
}
Object^ result = fun(userId);
public object PropertyList(string propertyFieldName)
static Func<String^, Object^>^ EntityCallDelegate(Object^ entity)
{
//实体类基类的一个方法定义:
//public object PropertyList(string propertyFieldName)
Type^ base = entity->GetType()->BaseType;
MethodInfo^ methodEntity = base->GetMethod("PropertyList", BindingFlags::Public | BindingFlags::Instance);
Func<String^, Object^>^ funEntity = (Func<String^, Object^>^)Delegate::CreateDelegate(Func<String^, Object^>::typeid,
entity, methodEntity);
//示例 String^ result = (String^)funEntity("Name");
return funEntity;
}
Func<String^, Object^>^ entityProp =EntityHelper::EntityCallDelegate(result);
int id = (int)entityProp("ID");
struct CppUserInfo
{
int ID;
//wstring Name;
CString Name;
tm Birthday;
};
//
//要使用下面的方法,请先 #include <string>
//
static wstring MarshalString(String ^ s) {
wstring os;
const wchar_t* chars =
(const wchar_t*)(Marshal::StringToHGlobalUni(s)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
return os;
}
static tm Convert2CppDateTime(DateTime^ dt)
{
tm result;
result.tm_year = dt->Year - 1900;
result.tm_mon = dt->Month;
result.tm_wday = dt->Day;
return result;
}
static DateTime^ Covert2NetDateTime(tm cppDate)
{
return gcnew DateTime(
cppDate.tm_year + 1900,
cppDate.tm_mon,
cppDate.tm_wday
);
}
//转换托管类型数据到本机结构体
Func<String^, Object^>^ entityProp =EntityHelper::EntityCallDelegate(result);
CppUserInfo user;
user.ID = (int)entityProp("ID");
user.Name = (String^)entityProp("Name");// MarshalString((String^)entityProp("Name"));
user.Birthday = Convert2CppDateTime((DateTime^)entityProp("Birthday"));
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有