Skip to content

Commit bd3e4cf

Browse files
mdonougheglennawatson
authored andcommitted
Housekeeping: fody - use FindType for Exception (#1828)
old code for locating the appropriate System.Exception type did not work when building using dotnet
1 parent 78fcfa0 commit bd3e4cf

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

src/ReactiveUI.Fody/ModuleWeaver.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public override void Execute()
2727
var observableAsPropertyWeaver = new ObservableAsPropertyWeaver
2828
{
2929
ModuleDefinition = ModuleDefinition,
30-
LogInfo = LogInfo
30+
LogInfo = LogInfo,
31+
FindType = FindType
3132
};
3233
observableAsPropertyWeaver.Execute();
3334

src/ReactiveUI.Fody/ObservableAsPropertyWeaver.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ public class ObservableAsPropertyWeaver
3131
/// </value>
3232
public Action<string> LogInfo { get; set; }
3333

34+
/// <summary>
35+
/// Locates a type from referenced assemblies by name.
36+
/// </summary>
37+
public Func<string, TypeDefinition> FindType { get; internal set; }
38+
3439
/// <summary>
3540
/// Executes this property weaver.
3641
/// </summary>
@@ -61,10 +66,7 @@ public void Execute()
6166
var observableAsPropertyHelper = ModuleDefinition.FindType("ReactiveUI", "ObservableAsPropertyHelper`1", reactiveUI, "T");
6267
var observableAsPropertyAttribute = ModuleDefinition.FindType("ReactiveUI.Fody.Helpers", "ObservableAsPropertyAttribute", helpers);
6368
var observableAsPropertyHelperGetValue = ModuleDefinition.ImportReference(observableAsPropertyHelper.Resolve().Properties.Single(x => x.Name == "Value").GetMethod);
64-
var systemRuntimeName = ModuleDefinition.AssemblyReferences.FirstOrDefault(x => x.Name == "System.Runtime");
65-
var exceptionDefinition = systemRuntimeName == null
66-
? ModuleDefinition.ImportReference(typeof(Exception)).Resolve() // Referenced from .NET Framework
67-
: ModuleDefinition.AssemblyResolver.Resolve(systemRuntimeName).MainModule.Types.First(x => x.Name == "Exception"); // Referenced from .NET Standard
69+
var exceptionDefinition = FindType(typeof(Exception).FullName);
6870
var constructorDefinition = exceptionDefinition.GetConstructors().Single(x => x.Parameters.Count == 1);
6971
var exceptionConstructor = ModuleDefinition.ImportReference(constructorDefinition);
7072

0 commit comments

Comments
 (0)