Dreamine.PLC.Mitsubishi.MxComponent 1.0.1
Dreamine.PLC.Mitsubishi.MxComponent 산업 자동화 및 I/O 기능을 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.PLC.Mitsubishi.MxComponent.Internal.DefaultComObjectFactory 클래스 참조sealed

더 자세히 ...

Dreamine.PLC.Mitsubishi.MxComponent.Internal.DefaultComObjectFactory에 대한 상속 다이어그램 :
Dreamine.PLC.Mitsubishi.MxComponent.Internal.DefaultComObjectFactory에 대한 협력 다이어그램:

Public 멤버 함수

object Create (string progId)

정적 Private 멤버 함수

static object CreateDotUtlType64Wrapper ()
static ? string FindDotUtlType64AssemblyPath ()
static InvalidOperationException CreateFriendlyException (string progId, Exception? innerException=null)

상세한 설명

설치된 COM 개체를 ProgID로 생성합니다.

DefaultComObjectFactory.cs 파일의 13 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ Create()

object Dreamine.PLC.Mitsubishi.MxComponent.Internal.DefaultComObjectFactory.Create ( string progId)
inline

지정한 ProgID에서 MX Component COM 개체를 생성합니다.

매개변수
progId생성할 COM 클래스의 ProgID입니다. 64비트 프로세스에서는 32비트 기본 ProgID가 64비트 래퍼로 치환됩니다.
반환값
생성된 후기 바인딩 COM 개체입니다.
예외
PlatformNotSupportedExceptionWindows가 아닌 플랫폼에서 호출할 때 발생합니다.
ArgumentExceptionprogId 가 비어 있거나 공백일 때 발생합니다.
InvalidOperationExceptionCOM 클래스가 등록되지 않았거나 래퍼 어셈블리 또는 형식을 찾을 수 없거나 개체를 생성할 수 없을 때 발생합니다.

Dreamine.PLC.Mitsubishi.MxComponent.Internal.IComObjectFactory를 구현.

DefaultComObjectFactory.cs 파일의 63 번째 라인에서 정의되었습니다.

64 {
65 if (!OperatingSystem.IsWindows())
66 {
67 throw new PlatformNotSupportedException("MX Component COM controls are supported on Windows only.");
68 }
69
70 if (string.IsNullOrWhiteSpace(progId))
71 {
72 throw new ArgumentException("COM ProgID must not be empty.", nameof(progId));
73 }
74
75 if (Environment.Is64BitProcess && progId.Equals("ActUtlType.ActUtlType", StringComparison.OrdinalIgnoreCase))
76 {
77 progId = "ActUtlType64.ActUtlWrap";
78 }
79
80 if (Environment.Is64BitProcess && progId.StartsWith("ActUtlType64.", StringComparison.OrdinalIgnoreCase))
81 {
82 return CreateDotUtlType64Wrapper();
83 }
84
85 Type? type;
86 try
87 {
88 type = Type.GetTypeFromProgID(progId, throwOnError: false);
89 }
90 catch (Exception ex)
91 {
92 throw CreateFriendlyException(progId, ex);
93 }
94
95 if (type is null)
96 {
97 throw CreateFriendlyException(progId);
98 }
99
100 try
101 {
102 return Activator.CreateInstance(type)
103 ?? throw new InvalidOperationException($"Failed to create MX Component COM object: {progId}");
104 }
105 catch (Exception ex)
106 {
107 throw CreateFriendlyException(progId, ex);
108 }
109 }

다음을 참조함 : CreateDotUtlType64Wrapper(), CreateFriendlyException().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ CreateDotUtlType64Wrapper()

object Dreamine.PLC.Mitsubishi.MxComponent.Internal.DefaultComObjectFactory.CreateDotUtlType64Wrapper ( )
inlinestaticprivate

설치된 DotUtlType64 래퍼 어셈블리에서 64비트 MX Component 개체를 생성합니다.

반환값
생성된 DotUtlType64 래퍼 개체입니다.
예외
InvalidOperationException래퍼 어셈블리나 형식을 찾을 수 없거나 인스턴스를 생성할 수 없을 때 발생합니다.
FileLoadException래퍼 어셈블리를 로드할 수 없을 때 발생할 수 있습니다.
BadImageFormatException래퍼 어셈블리 형식이나 프로세스 비트 수가 호환되지 않을 때 발생할 수 있습니다.

DefaultComObjectFactory.cs 파일의 151 번째 라인에서 정의되었습니다.

152 {
153 var assemblyPath = FindDotUtlType64AssemblyPath();
154 if (assemblyPath is null)
155 {
156 throw new InvalidOperationException(
157 "MX Component 64-bit wrapper assembly was not found. Expected DotUtlType64.dll under the MELSOFT ACT Control Wrapper folder.");
158 }
159
160 var assembly = Assembly.LoadFrom(assemblyPath);
161 var type = assembly.GetType("DotUtlType64.DotUtlType64", throwOnError: false)
162 ?? throw new InvalidOperationException($"DotUtlType64.DotUtlType64 type was not found in {assemblyPath}.");
163
164 return Activator.CreateInstance(type)
165 ?? throw new InvalidOperationException($"Failed to create DotUtlType64.DotUtlType64 from {assemblyPath}.");
166 }

다음을 참조함 : FindDotUtlType64AssemblyPath().

다음에 의해서 참조됨 : Create().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ CreateFriendlyException()

InvalidOperationException Dreamine.PLC.Mitsubishi.MxComponent.Internal.DefaultComObjectFactory.CreateFriendlyException ( string progId,
Exception? innerException = null )
inlinestaticprivate

COM 등록 또는 생성 실패를 프로세스 비트 수 안내가 포함된 예외로 변환합니다.

매개변수
progId생성에 실패한 COM ProgID입니다.
innerException원래 발생한 예외이며 없으면 null입니다.
반환값
진단 안내와 원본 예외를 포함한 예외입니다.

DefaultComObjectFactory.cs 파일의 238 번째 라인에서 정의되었습니다.

239 {
240 var bitness = Environment.Is64BitProcess ? "x64" : "x86";
241 return new InvalidOperationException(
242 $"MX Component COM '{progId}' is not registered for the current {bitness} process. " +
243 "For a 64-bit process, try ProgID 'ActUtlType64.ActUtlWrap'. For a 32-bit process, try 'ActUtlType.ActUtlType'. " +
244 "Check MX Component Communication Setup Utility and confirm the Logical Station Number.",
245 innerException);
246 }

다음에 의해서 참조됨 : Create().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FindDotUtlType64AssemblyPath()

? string Dreamine.PLC.Mitsubishi.MxComponent.Internal.DefaultComObjectFactory.FindDotUtlType64AssemblyPath ( )
inlinestaticprivate

일반적인 MELSOFT 설치 경로에서 DotUtlType64 래퍼 어셈블리를 찾습니다.

반환값
처음 발견된 어셈블리 경로이며 파일이 없으면 null입니다.

DefaultComObjectFactory.cs 파일의 184 번째 라인에서 정의되었습니다.

185 {
186 var candidates = new[]
187 {
188 Path.Combine(
189 Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86),
190 "MELSOFT",
191 "ACT",
192 "Control",
193 "Wrapper",
194 "DotUtlType64.dll"),
195 Path.Combine(
196 Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86),
197 "MELSOFT",
198 "ACT",
199 "Control",
200 "DotUtlType64.dll")
201 };
202
203 return candidates.FirstOrDefault(File.Exists);
204 }

다음에 의해서 참조됨 : CreateDotUtlType64Wrapper().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: