【发布时间】:2010-01-14 12:32:40
【问题描述】:
我有这个类,它接受从代码中不同位置调用的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());
但我想更进一步并关闭 Class,以便 CreateReportClass 你只能通过 CreateReportParam 否则编译器会抛出异常。
请给我一些想法,我怎样才能做到这一点。
【问题讨论】:
-
抛出异常是在运行时发生的事情。编译器(通常)不会抛出异常。
标签: c# .net architecture .net-3.5