Passing fields that are required to constructors should be fine. Your code doesn't look dirty yet, but if it started to grow say 10 required fields, then it is better to create an object that contains all the required fields and then use that object when creating the object (Constructor).
Right now this is not dirty
class MyClass
{
private string Field1;
private int Field2;
public MyClass(string Field1, int Field2)
{
this.Field1 = Field1;
this.Field2 = Field2;
}
}
If it became like this
class MyClass
{
private string Field1;
private int Field2;
public MyClass(string Field1, int Field2, int Field3, int Field4, int Field5, int Field6, int Field7, int Field8, int Field9, int Field10)
{
this.Field1 = Field1;
this.Field2 = Field2;
//Set them
}
}
Then it is better to have this
class RequiredFields
{
//All required fields
}
class MyClass
{
private string Field1;
private int Field2;
public MyClass(RequiredFields requiredFields)
{
this.Field1 = requiredFields.Field1;
this.Field2 = requiredFields.Field2;
//Set them
}
}