I'm trying to use reflection to create a struct
here is the code I'm using:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
public interface ISomeInterface
{
}
public struct SomeStruct : ISomeInterface
{
    public int Value;
    public SomeStruct(int value)
    {
        Value = value;
    }
}
public struct Filter
{
    public SomeStruct SomeStruct;
}
public class SomeClass
{
    private List<ISomeInterface> someInterfaces = new List<ISomeInterface>();
    public void Add(ISomeInterface someInterface)
    {
        this.someInterfaces.Add(someInterface);
    }
    public TFilter ToFilter<TFilter>() where TFilter : struct
    {
        var filterType = typeof(TFilter);
        var filterFields = filterType.GetFields();
        var result = Activator.CreateInstance<TFilter>();
        foreach (var filterField in filterFields)
        {
            var component = this.someInterfaces.First(s => s.GetType() == filterField.FieldType);
            filterField.SetValue(result, component);
        }
        return result;
    }
}
class Program
{
    public static void Main()
    {
        var someClass = new SomeClass();
        var someStruct = new SomeStruct(10);
        someClass.Add(someStruct);
        var filter = someClass.ToFilter<Filter>();
        // Should return 10, but returns 0, why?
        Console.WriteLine(filter.SomeStruct.Value);
        Console.ReadLine();
    }
}
For some reason, the result of the ToFilter method returns a struct with an incorrect value. I've been at this for hours and I just don't understand what's going on.
It's been frustrating me for hours, if someone could please help me that would be greatly appreciated.