У меня есть этот класс, который принимает Dictionary<string,object>
, который вызывается из разных мест в коде. Концепция словаря делает вещи нетипизированными и трудными для понимания того, что передать классу для функционирования, иначе он вызывает исключение во время выполнения. Поскольку Dictionary<string,object>
является определением контракта, мне пришлось написать метод расширения для преобразования моего типа в словарь при вызове моего класса. Но как я могу закрыть этот класс, чтобы он принимал только определенный тип
Так, например.
public class CreateReport : IRep
{
public void SetParam(Dictionary<string,object> parm)
{
// Here the dictionary param are been set.
}
public object RunRep()
{
}
}
ClassInvoker.Invoke(CreateReport , Dictionary<string,object>{"MyParam" , "World"});
Так вот, как обстоят дела сейчас.
Я изменил его, создав класс Property как
public class CreateReportProp
{
public string MyParam { get;set;}
}
и имеет метод расширения как ConvertObjToDict
Итак, теперь мы должны сделать что-то вроде
ClassInvoker.Invoke(CreateReport , new CreateReportProp { MyParam = "World"}.ConvertObjToDict());
Но я бы хотел пойти дальше и закрыть класс, чтобы CreateReportClass
вы могли только передать CreateReportParam
, иначе компилятор выдает исключение.
Пожалуйста, дайте мне несколько идей о том, как я могу достичь этого.