private static void RemoveUserFromSharePointGroup(NameEntity ne, SPSecurableObject spso) { SPWeb web = null; if (spso is SPWeb) { web = spso as SPWeb; } else if (spso is SPList) { web = (spso as SPList).ParentWeb; } else if (spso is SPListItem) { web = (spso as SPListItem).ParentList.ParentWeb; } if (web != null) { bool old = web.AllowUnsafeUpdates; web.AllowUnsafeUpdates = true; web.Update(); web.SiteGroups[ne.ContainerSPGroup].Users.Remove(ne.Principal.LoginName); web.AllowUnsafeUpdates = old; web.Update(); } }
protected override void DefWndProc(ref System.Windows.Forms.Message m) { switch (m.Msg) { // 接收 CopyData 消息,读取发送过来的数据 case WM_COPYDATA: COPYDATASTRUCT cds = new COPYDATASTRUCT(); Type mytype = cds.GetType(); cds = (COPYDATASTRUCT)m.GetLParam(mytype); uint flag = (uint)(cds.dwData); byte[] bt = new byte[cds.cbData]; Marshal.Copy(cds.lpData, bt, 0, bt.Length); object obj = SerializeUtil.Deserialize(bt); NameEntity nameEntity = (NameEntity)obj; if (OnReceiveBytes != null) { OnReceiveBytes(this, flag, bt); } break; default: base.DefWndProc(ref m); break; } }
public static void AddErrorIfAllNamesEmpty(this Controller item, NameEntity target) { if (target.IsAllNamesEmpty()) { item.ModelState.AddModelError("", "中文名和英文名不允许同时为空"); } }
static void TestComplexDllByProcess() { ShareMemory sm = new ShareMemory(); sm.initRead(); sm.initWrite(); //Create a new process info structure. ProcessStartInfo pInfo = new ProcessStartInfo(); //Set the file name member of the process info structure. pInfo.FileName = "testLeakConsoleExe.exe"; //Start the process. Process p = Process.Start(pInfo); NameEntity nameEntity = new NameEntity(); nameEntity._type = NameEntityType.OrganizationName; // ShareMemory.WriteToMemory((uint)Marshal.SizeOf(nameEntity), nameEntity, "Global\\ShareMemory"); Message msg = new Message(); sm.WriteToMemory((uint)Marshal.SizeOf(msg), msg); object obj = (NameEntity)sm.ReadFromMemoryToObj((uint)Marshal.SizeOf(nameEntity), typeof(NameEntity)); if (obj == null) { return; } }
public async Task<NameResponse> ValidateNameAsync(string name) { var entity = new NameEntity() { name = name }; var result = await _webManager.PostData(new Uri(Endpoints.ValidateName), null, new StringContent(JsonConvert.SerializeObject(entity), Encoding.UTF8, "application/json")); return JsonConvert.DeserializeObject<NameResponse>(result.ResultJson); }
//not success static void TestComplexDllReflection() { Console.WriteLine("Complex:Use DllLoadLibrary&Reflection,"); PrintCurrentProcessMemUsage(); UseDllByReflection reflectFun = new UseDllByReflection(); reflectFun.LoadDll("testCppDll.dll"); reflectFun.LoadFun("CreateNameEntityByTypeByReturn"); //NameEntity a = new NameEntity(); int a = 0; unsafe { object[] Parameters = new object[] { a }; Type[] ParameterTypes = new Type[] { typeof(int) }; ModePass[] themode = new ModePass[] { ModePass.ByRef }; Type Type_Return = typeof(IntPtr); string methodName1 = "CreateNameEntityByTypeByReturn"; object ret = reflectFun.Invoke(methodName1, Parameters, ParameterTypes, themode, Type_Return); IntPtr retPtr = (IntPtr)ret; NameEntity retStruct = (NameEntity)Marshal.PtrToStructure(retPtr, typeof(NameEntity)); //在非托管代码中使用CoTaskMemAlloc分配的内存,可以使用Marshal.FreeCoTaskMem方法释放 Marshal.FreeCoTaskMem(retPtr); Console.WriteLine("非托管函数返回的结构体数据:double = {0:f6}, int = {1}", retStruct._score, retStruct._highlightLength); } reflectFun.UnLoadDll(); reflectFun.LoadDll("testCppDll.dll"); reflectFun.LoadFun("CreateNameEntityByType"); NameEntity nameEntity = new NameEntity(); IntPtr paraPtr = Marshal.AllocHGlobal(Marshal.SizeOf(nameEntity)); Marshal.StructureToPtr(nameEntity, paraPtr, false); uint b = 0; unsafe { object[] Parameters = new object[] { paraPtr, b }; Type[] ParameterTypes = new Type[] { typeof(IntPtr), typeof(uint) }; ModePass[] themode = new ModePass[] { ModePass.ByRef, ModePass.ByValue }; Type Type_Return = typeof(bool); string methodName2 = "CreateNameEntityByType"; object ret = reflectFun.Invoke(methodName2, Parameters, ParameterTypes, themode, Type_Return); NameEntity retStruct = (NameEntity)Marshal.PtrToStructure(paraPtr, typeof(NameEntity)); //在非托管代码中使用CoTaskMemAlloc分配的内存,可以使用Marshal.FreeCoTaskMem方法释放 Marshal.FreeCoTaskMem(paraPtr); Console.WriteLine("非托管函数返回的结构体数据:double = {0:f6}, int = {1}", retStruct._score, retStruct._highlightLength); } reflectFun.UnLoadDll(); PrintCurrentProcessMemUsage(); Console.WriteLine("Complex: End"); }
public async Task <NameResponse> ValidateNameAsync(string name) { var entity = new NameEntity() { name = name }; var result = await _webManager.PostData(new Uri(Endpoints.ValidateName), null, new StringContent(JsonConvert.SerializeObject(entity), Encoding.UTF8, "application/json")); return(JsonConvert.DeserializeObject <NameResponse>(result.ResultJson)); }
internal static NameEntity ToDataObject(this Name serviceModel) { NameEntity dataObject = new NameEntity(); dataObject.LanguageId = serviceModel.LanguageId; dataObject.Value = serviceModel.Value; dataObject.Adjective = serviceModel.Adjective; dataObject.Comment = serviceModel.Comment; return(dataObject); }
internal static Name ToServiceModel(this NameEntity dataObject) { Name serviceModel = new Name(); serviceModel.LanguageId = dataObject.LanguageId; serviceModel.Value = dataObject.Value; serviceModel.Adjective = dataObject.Adjective; serviceModel.Comment = dataObject.Comment; return(serviceModel); }
private Guid GetParentGuid(NameEntity namedEntity) { Guid result = namedEntity.Guid; /*if (namedEntity is IPartiallyOverridableEntity overridable && overridable.IsPartiallyOverridden) * result = overridable.OverriddenVersionId.Value; * else if (namedEntity is IOverridableEntity overridableEntity && overridableEntity.IsOverridden) * result = overridableEntity.OverriddenVersionId.Value; * else if (namedEntity.ParentEntity != null && namedEntity.ParentEntity.ParentEntity != null && HasParentTagContainer(namedEntity)) * result = namedEntity.ParentEntity.ParentEntity.Guid;*/ return(result); }
static void TestComplexDllLoadLibrary() { Console.WriteLine("Complex:Use DllLoadLibrary, "); PrintCurrentProcessMemUsage(); IntPtr hModule = Win32.LoadLibrary("testCppDll.dll"); int error = Marshal.GetLastWin32Error(); //NameEntityType type = NameEntityType.OrganizationName; int type = 0; if (hModule == IntPtr.Zero) { return; } { //test findNames func CreateNameEntitysByType createNameEntitys = (CreateNameEntitysByType)UseComplexDllByLoadLibrary.GetFunctionAddress(hModule, "CreateNameEntitysByType", typeof(CreateNameEntitysByType)); string text = ""; IntPtr arrayPtr = IntPtr.Zero; uint arraySize = 0; List <NameEntity> nameList = new List <NameEntity>(); if (createNameEntitys(text, out arrayPtr, ref arraySize, type)) { NameEntity[] names = new NameEntity[arraySize]; IntPtr cur = arrayPtr; for (int i = 0; i < arraySize; i++) { names[i] = new NameEntity(); //cur->names, free cur Marshal.PtrToStructure(cur, names[i]); Marshal.DestroyStructure(cur, typeof(NameEntity)); cur = (IntPtr)((int)cur + Marshal.SizeOf(names[i])); } Marshal.FreeCoTaskMem(arrayPtr); nameList.AddRange(names); } //createName CreateNameEntityByType createNameEntity = (CreateNameEntityByType)UseComplexDllByLoadLibrary.GetFunctionAddress(hModule, "CreateNameEntityByType", typeof(CreateNameEntityByType)); IntPtr namePtr = IntPtr.Zero; if (createNameEntity(out namePtr, type)) { NameEntity retStruct = (NameEntity)Marshal.PtrToStructure(namePtr, typeof(NameEntity)); // 在非托管代码中使用CoTaskMemAlloc分配的内存,可以使用Marshal.FreeCoTaskMem方法释放 Marshal.FreeCoTaskMem(namePtr); Console.WriteLine("非托管函数返回的结构体数据:double = {0:f6}, int = {1}", retStruct._score, retStruct._highlightLength); } } Win32.FreeLibrary(hModule); PrintCurrentProcessMemUsage(); Console.WriteLine("Complex: Test END\n"); }
public string GetReferenceInternal(IBaseEntity entity) { string result = string.Empty; if (entity != null) { string particle = TypeParticle(entity); NameEntity namedEntity = entity as NameEntity; Guid fileGuid = GetParentGuid(namedEntity); result = string.Format(CultureInfo.InvariantCulture, "{0}{3}{1}{3}{{{2}}}.{4}", particle, NormalizeName(namedEntity?.Name), fileGuid, Separator, FilesConfig.EasyBPartialExtensionFile); } return(result); }
public static string GetNameEntityColor_Tencent(string entityEn) { NameEntity ne = JsonConvert.DeserializeObject <NameEntity>((Application.Current as App).jsonNamedEntityTag_Tencent); for (int i = 0; i <= ne.en.Count - 1; i++) { if (entityEn == ne.en[i]) { return(ne.bgcolor[i]); } } return(""); }
public void Initialize() { NameHandler.OnSetNameAsObservable() .Subscribe(name => { Set(name); SetPhoton(name); Render(name); }) .AddTo(Disposable); Render(NameEntity.Load()); SetPhoton(NameEntity.Load()); }
public int initRead() { m_hReadEvent = new Semaphore(0, 1, GLOBAL_EVENT_OUT_NAME);//new ProcessSemaphore(GLOBAL_EVENT_OUT_NAME, 0, 1); IntPtr hMappingHandle = IntPtr.Zero; IntPtr hVoid = IntPtr.Zero; uint i = Win32.GetLastError(); NameEntity nameEntity = new NameEntity(); hMappingHandle = Win32.CreateFileMapping(INVALID_HANDLE_VALUE, IntPtr.Zero, (uint)PAGE_READWRITE, 0, (uint)Marshal.SizeOf(nameEntity), GLOBAL_MEMORY_OUT_NAME); if (hMappingHandle == IntPtr.Zero) { return(1); } return(0); }
public int initWrite() { IntPtr hMappingHandle = IntPtr.Zero; IntPtr hVoid = IntPtr.Zero; m_hWriteEvent[0] = new Semaphore(0, 1, GLOBAL_EVENT_IN1_NAME); m_hWriteEvent[1] = new Semaphore(0, 1, GLOBAL_EVENT_IN2_NAME); NameEntity nameEntity = new NameEntity(); hMappingHandle = Win32.CreateFileMapping(INVALID_HANDLE_VALUE, IntPtr.Zero, (uint)PAGE_READWRITE, 0, (uint)Marshal.SizeOf(nameEntity), GLOBAL_MEMORY_IN_NAME); if (hMappingHandle == IntPtr.Zero) { return(1); } return(0); }
public bool CreateNameEntityByTypeByParam(int value, ref NameEntity nameEntity) { int type = 0; IntPtr hModule = Win32.LoadLibrary("testCppDll.dll"); CreateNameEntityByTypeDelegate createNameEntity = (CreateNameEntityByTypeDelegate)UseComplexDllByLoadLibrary.GetFunctionAddress(hModule, "CreateNameEntityByType", typeof(CreateNameEntityByTypeDelegate)); IntPtr namePtr = IntPtr.Zero; if (createNameEntity(out namePtr, type)) { nameEntity = (NameEntity)Marshal.PtrToStructure(namePtr, typeof(NameEntity)); // 在非托管代码中使用CoTaskMemAlloc分配的内存,可以使用Marshal.FreeCoTaskMem方法释放 Marshal.FreeCoTaskMem(namePtr); Console.WriteLine("非托管函数返回的结构体数据:double = {0:f6}, int = {1}", nameEntity._score, nameEntity._highlightLength); } Win32.FreeLibrary(hModule); return(true); }
public void DoTest() { using (var client1 = WcfServiceClient <INameEntityService> .Create("test1")) { try { int type = 0; NameEntity nameEntity = new NameEntity(); bool ret = client1.Instance.CreateNameEntityByTypeByParam(type, ref nameEntity); Console.WriteLine("{0}", ret); } catch (FaultException <WcfServiceFault> fault) { Console.WriteLine(fault.ToString()); } catch (Exception e) //handles exceptions not in wcf communication { Console.WriteLine(e.ToString()); } } }
static void TestComplexDllStatic() { Console.WriteLine("Complex: Use StaticDllImport,"); PrintCurrentProcessMemUsage(); UseComplexDllByStatic instanceUseComplexDllByStatic = new UseComplexDllByStatic(); bool isInit = instanceUseComplexDllByStatic.Initialize(@".\data"); if (isInit) { List <NameEntity> nameResults = new List <NameEntity>(); string text = ""; bool isSuccessFindNames = instanceUseComplexDllByStatic.CreateNameEntitys(text, ref nameResults); NameEntity nameEntity = new NameEntity(); bool isSuccessCreateName = instanceUseComplexDllByStatic.CreateNameEntity(ref nameEntity); } ClearMemory(); PrintCurrentProcessMemUsage(); Console.WriteLine("Complex: Test END\n"); }
public void TestComplexLoadLibrary() { IntPtr hModule = Win32.LoadLibrary("testCppDll.dll"); int error = Marshal.GetLastWin32Error(); //Console.WriteLine("The Last Win32 Error was: " + error); if (hModule == IntPtr.Zero) { return; } unsafe { InitFunc initFunc = (InitFunc)UseDllByLoadLibrary.GetFunctionAddress(hModule, "Initialize", typeof(InitFunc)); bool isInit = initFunc(""); if (isInit) { string text = ""; FindNames findNamesFunc = (FindNames)UseDllByLoadLibrary.GetFunctionAddress(hModule, "FindNames", typeof(FindNames)); IntPtr arrayPtr = IntPtr.Zero; uint arraySize; if (findNamesFunc(text, out arrayPtr, out arraySize)) { NameEntity[] names = new NameEntity[arraySize]; IntPtr cur = arrayPtr; for (int i = 0; i < arraySize; i++) { names[i] = new NameEntity(); Marshal.PtrToStructure(cur, names[i]); Marshal.DestroyStructure(cur, typeof(NameEntity)); cur = (IntPtr)((int)cur + Marshal.SizeOf(names[i])); } Assert.AreEqual(names.Count(), arraySize); } Assert.AreNotEqual(arrayPtr, IntPtr.Zero); Marshal.FreeCoTaskMem(arrayPtr); } } Win32.FreeLibrary(hModule); }
static void TestUnloadDllBySecondAppDomain() { Console.WriteLine("Complex:Use SecondAppDomain"); PrintCurrentProcessMemUsage(); using (AppDomainDynamicLoader domainLoader = new AppDomainDynamicLoader(@"testUseDllByCSharp.dll")) { //construct param NameEntity nameEntityTemp = new NameEntity(); IntPtr structPtr = Marshal.AllocHGlobal(Marshal.SizeOf(nameEntityTemp)); Marshal.StructureToPtr(nameEntityTemp, structPtr, false); object[] Parameters = new object[] { structPtr }; //appdomain use SetData And GetData domainLoader.InvokeMethod("testUseDllByCSharp.UseComplexDllByLoadLibrary", "TestComplexDllLoadLibraryByParam", Parameters); NameEntity nameEntity = domainLoader.appDomain.GetData("createNameEntity") as NameEntity; //review param NameEntity nameEntityTempReview = (NameEntity)Marshal.PtrToStructure(structPtr, typeof(NameEntity)); Marshal.FreeHGlobal(structPtr); } PrintCurrentProcessMemUsage(); Console.WriteLine("Complex:End"); }
private void Set(string name) => NameEntity.Save(name);
static void AppendName(StringBuilder sb, NameEntity entity) { AppendValues(sb, entity.IsSystemEntity() ? entity.GetType().ToString().Replace("Geotab.Checkmate.ObjectModel.", "").Replace(",", " ") : entity.Name.Replace(",", " ")); }
/// <summary> /// 从CRF推测结果获取命名实体 /// </summary> /// <param name="path">data/crfResultDoc.txt</param> /// <returns></returns> public static List <NameEntity> GetNameEntityFromFile(string path) { StreamReader reader = File.OpenText(path); string line = null; //每一行文本 StringBuilder sb = new StringBuilder(); //用于连接第一列的实体 string lastType = "O"; //上一行的实体类别 List <NameEntity> list = new List <NameEntity>(); //包含命名实体的数组 while ((line = reader.ReadLine()) != null) { if (string.IsNullOrEmpty(line)) { continue;//略过空行 } else { string[] wordTag = line.Split(); //遇到实体首部,可能前一个是实体中部(根据缓冲区有无字词判断),也可能是非实体 if (wordTag.Last().StartsWith("B-")) { //把上一个结果存进去,并清除缓存,并追加当前行 if (sb.Length != 0) { NameEntity ne = new NameEntity(); ne.Word = sb.ToString(); ne.Type = lastType.Substring(2); list.Add(ne); sb.Clear(); sb.Append(wordTag.First()); } else { sb.Append(wordTag.First()); } } //遇到实体中部,只要继续追加字即可,因为不知道后面还有没有实体中部 else if (wordTag.Last().StartsWith("I-")) { sb.Append(wordTag.First()); } //遇到非实体,可能是前一个实体结束,或者前一个也是非实体 else { if (lastType.StartsWith("I-") || lastType.StartsWith("B-")) { NameEntity ne = new NameEntity(); ne.Word = sb.ToString(); ne.Type = lastType.Substring(2); list.Add(ne); sb.Clear(); } //若是B无效,若是O不管 //本来b后面是O隔了个I是无效的,但是可能是单个实体(只有头部) } //更新上个状态为这一行,然后继续下一行读取 lastType = wordTag.Last(); } } reader.Close(); return(list); }