Skip to content

Commit 100563f

Browse files
committed
* Turned the primes document into an embedded resource to avoid having it as a separate file having to be carried around in the nuget.
1 parent 16b0512 commit 100563f

File tree

2 files changed

+28
-15
lines changed

2 files changed

+28
-15
lines changed

DataStructures/Common/PrimesList.cs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.IO;
55
using System.Reflection;
6+
using System.Text;
67

78
namespace DataStructures.Common
89
{
@@ -64,8 +65,7 @@ public static PrimesList Instance
6465
/// </summary>
6566
private static void _initializeData()
6667
{
67-
_primesDocPath = Path.Combine(Path.GetDirectoryName(typeof(PrimesList).GetTypeInfo().Assembly.Location), @"Data/PrimesDocument_10K.csv");
68-
string[] lines = File.ReadAllLines(_primesDocPath);
68+
string[] lines = _readResource("DataStructures.Data.PrimesDocument_10K.csv");
6969

7070
foreach (var line in lines)
7171
{
@@ -84,10 +84,28 @@ private static void _initializeData()
8484
}
8585
}
8686

87-
/// <summary>
88-
/// Return count of primes.
89-
/// </summary>
90-
public int Count
87+
/// <summary>
88+
/// Reads an embedded resource as a text file.
89+
/// </summary>
90+
/// <returns></returns>
91+
public static string[] _readResource(string resourceName)
92+
{
93+
try
94+
{
95+
using (var stream = typeof(PrimesList).GetTypeInfo().Assembly.GetManifestResourceStream(resourceName))
96+
using (var reader = new StreamReader(stream ?? throw new InvalidOperationException("Failed to read resource"), Encoding.UTF8))
97+
return reader.ReadToEnd().Split("\r\n");
98+
}
99+
catch (Exception ex)
100+
{
101+
throw new Exception($"Failed to read resource {resourceName}", ex);
102+
}
103+
}
104+
105+
/// <summary>
106+
/// Return count of primes.
107+
/// </summary>
108+
public int Count
91109
{
92110
get { return _primes.Count; }
93111
}
@@ -210,5 +228,4 @@ public void CopyTo(int[] array, int index = 0)
210228
}
211229

212230
}
213-
214231
}

DataStructures/DataStructures.csproj

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,12 @@
22
<PropertyGroup>
33
<TargetFramework>netcoreapp2.0</TargetFramework>
44
</PropertyGroup>
5-
65
<ItemGroup>
7-
<Content Include="Data\PrimesDocument_10K.csv">
8-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
9-
</Content>
6+
<None Remove="Data\PrimesDocument_10K.csv" />
107
</ItemGroup>
11-
128
<ItemGroup>
13-
<None Update="Data\PrimesDocument_10K.csv">
14-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
15-
</None>
9+
<EmbeddedResource Include="Data\PrimesDocument_10K.csv">
10+
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
11+
</EmbeddedResource>
1612
</ItemGroup>
1713
</Project>

0 commit comments

Comments
 (0)