[DllImport("Interop.dll",EntryPoint = "Multiply",CharSet = CharSet.Ansi)]
static extern int Multiply(int factorA, int factorB);
namespace NetLib
{
public class User
{
static List<IUserInfo> UserDb = new List<IUserInfo>();
public int GetUserID(string IdString)
{
int result = 0;
int.TryParse(IdString, out result);
return result;
}
public DateTime GetUserBirthday(int userId)
{
return new DateTime(1980, 1, 1);
}
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;
}
//返回List或者数组,不影响 C++调用
public List<IUserInfo> GetUsers(string likeName)
{
List<IUserInfo> users = new List<NetLib.IUserInfo>();
for (int i = 0; i < 10; i++)
{
IUserInfo userinfo = GetUserByID(i);
userinfo.Name += likeName;
users.Add(userinfo);
}
//return users.ToArray();
return users;
}
public bool SaveUsers(IList<IUserInfo> users)
{
UserDb.AddRange(users);
return true;
}
public IUserInfo CreateUserObject()
{
return EntityBuilder.CreateEntity<IUserInfo>();
}
public bool SaveUsers2(IEnumerable<Object> para)
{
var users = from u in para
select u as IUserInfo;
return SaveUsers (users.ToList());
}
}
}
using namespace System; using namespace System::Reflection; using namespace Runtime::InteropServices; using namespace System::Collections;
public ref class UserProxy
{
private:
String^ assemblyFile; //"..\\NetLib\\bin\\Debug\\NetLib.dll"
Object^ dotnetObject;
Type^ entityBuilderType;
String^ className = "NetLib.User";
EntityHelper^ helper;
public:
UserProxy(String^ assemblyFile)
{
this->assemblyFile = assemblyFile;
Assembly^ ass = Assembly::LoadFrom(this->assemblyFile);
this->dotnetObject = ass->CreateInstance(className);
String^ sodPath = System::IO::Path::Combine(System::IO::Path::GetDirectoryName(this->assemblyFile), "PWMIS.Core.dll");
/*Assembly^ ass_sod = Assembly::LoadFrom(sodPath);
this->entityBuilderType = ass_sod->GetType("PWMIS.DataMap.Entity.EntityBuilder");*/
helper = gcnew EntityHelper(sodPath);
}
}
public ref class UserProxy{}
String^ assemblyFile;
Assembly^ ass = Assembly::LoadFrom(this->assemblyFile);
public int GetUserID(string IdString){}
int GetUserID(String^ iDstring)
{
MethodInfo^ method = this->dotnetObject->GetType()->GetMethod("GetUserID", BindingFlags::Public | BindingFlags::Instance);
Func<String^, int>^ fun = (Func<String^, int>^)Delegate::CreateDelegate(Func<String^, int>::typeid, this->dotnetObject, method);
int result = fun(iDstring);
return result;
}
Func<String^, int>::typeid
DateTime GetUserBirthday(int userId)
{
MethodInfo^ method = dotnetObject->GetType()->GetMethod("GetUserBirthday", BindingFlags::Public | BindingFlags::Instance);
Func<int, DateTime>^ fun = (Func<int, DateTime>^)Delegate::CreateDelegate(Func<int, DateTime>::typeid, this->dotnetObject, method);
DateTime result = fun(userId);
return result;
}
NetLibProxy::UserProxy^ proxy = gcnew NetLibProxy::UserProxy("..\\NetLib\\bin\\Debug\\NetLib.dll");
int result= proxy->GetUserID("123456");
DateTime date = proxy->GetUserBirthday(result);
System::Console::WriteLine("C++/CLI .Net Proxy Class Call Test Result:\r\n UserID={0},\r\n Birthday={1}",
result,date.ToShortDateString());
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有