我有一个C#代码片段,如下所示:
[OracleCustomTypeMapping(Constants.DBSchema + ".TAB_VARCHAR2_250")]
public class StringTableFactory : TableFactoryTemplate<StringTable>
{
public override System.Array CreateStatusArray(int length)
{
return new OracleUdtStatus[length];
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更改属性声明,所以从web.config中读取Constants.DBSchema而不是将其硬编码为代码中的常量?如果我把ConfigurationManager.appSettings放在属性声明中,我得到"一个属性参数必须是一个常量表达式..."错误.
谢谢.
ros*_*dia 10
而不是将其作为构造函数参数的一部分传递,而是直接从ConfigurationManagerAttribute的构造函数中读取它.
public class OracleCustomTypeMappingAttribute : Attribute
{
public OracleCustomTypeMappingAttribute(string typeName)
{
var schema = ConfigurationManager.AppSettings["Schema"];
TypeMapping = schema + "." + typeName;
// Or whatever property needs to be set
}
}
Run Code Online (Sandbox Code Playgroud)
然后你会做:
[OracleCustomTypeMapping("TAB_VARCHAR2_250")]
public class StringTableFactory : TableFactoryTemplate<StringTable>
{
public override System.Array CreateStatusArray(int length)
{
return new OracleUdtStatus[length];
}
}
Run Code Online (Sandbox Code Playgroud)