我正在编写一个.NET Web应用程序,管理员可以在其中自定义呈现给用户的各种数据输入表单.管理员可以创建和自定义大约六种不同的字段类型(即文本,数字,下拉列表,文件上载).所有字段共享一组基本属性/行为(是否需要该字段?它是否具有默认字段值?).还有一系列字段特定的属性/行为(即下拉列表具有数据源属性,但文本字段不具有).为简单起见,我将遗漏问题域的许多其他特征.
类层次结构很简单:一个抽象的超类,它封装了常见的行为/属性,以及大约六个处理字段特定内容的具体子类.
每个字段类型都呈现(即映射到)作为特定类型的.NET服务器控件,所有这些都派生自System.Web.UI.Control.
我创建了以下代码来映射字段域对象及其相应的UI控件之间的值:
public static void Bind(Control control, IList<DocumentFieldBase> fieldBaseList)
foreach (DocumentFieldBase fieldBase in fields){
if (typeof (DocumentFieldText).IsInstanceOfType(fieldBase)){
TextBox textbox = (TextBox) control;
textbox.Text = (fieldBase as DocumentFieldText).GetValue();
}
if (typeof (DocumentFieldDropDown).IsInstanceOfType(fieldBase)){
DropDown dropDown= (DropDown) control;
dropDown.Text = (fieldBase as DocumentFieldSelectOne).GetValue().Text;
dropDown.DataSource= (fieldBase as DocumentFieldSelectOne).DataSource;
dropDown.Id= (fieldBase as DocumentFieldSelectOne).GetValue().Id;
}
//more if statements left out for brevity
}
}
Run Code Online (Sandbox Code Playgroud)
如果执行类型检查的语句,我想抛弃那些不敬虔的人.我正在拍摄的方法是使用子类输入为每个字段/控件组合创建一个方法重载.例如:
public static void Bind(TextBox control, DocumentFieldText fieldText){
//some implementation code
}
public static void Bind(DropDown control, DocumentFieldDropDown fieldDropDown){ …Run Code Online (Sandbox Code Playgroud) 是否有一个我可以调用的方法来检索特定ValidationGroup是否有效的布尔值? 我不想实际显示验证消息或摘要 - 我只是想知道它是否有效.
就像是:
Page.IsValid("MyValidationGroup")
Run Code Online (Sandbox Code Playgroud) 我在第三方设计的设计很差JAR,我需要访问其中一个私有字段.例如,为什么我需要选择私人领域是否有必要?
class IWasDesignedPoorly {
private Hashtable stuffIWant;
}
IWasDesignedPoorly obj = ...;
Run Code Online (Sandbox Code Playgroud)
我如何使用反射来获得价值stuffIWant?
我的类包含来自Interop的对象,并在其上调用一个方法,使其分配内容.它还公开了一个释放这些东西的方法,所以我希望我应该在Dispose()中调用它:
class MyClass : IDisposable
{
private DllName.ComClassName comInstance;
void SomeMethod()
{
comInstance = new DllName.ComClassName();
comInstance.AllocStuff();
}
public void Dispose()
{
comInstance.FreeThatStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我应该扩展所有这些以遵循Dispose模式.我没有其他一次性或非托管资源可以发布,所以假设comInstance被管理(不是Interop所做的那样,将非托管包装到托管?),我认为该模式解决了:
public void Dispose()
{
if (comInstance != null)
{
comInstance.FreeStuff();
comInstance = null;
}
}
Run Code Online (Sandbox Code Playgroud)
哪个泄漏除非我在MyClass的实例上显式调用Dispose(),这会使Dispose模式有缺陷?那么这是否意味着comInstance必须是非托管的,并且模式解析为:
public void Dispose()
{
DisposeComInstance();
GC.SuppressFinalize(this);
}
~MyClass()
{
DisposeComInstance();
}
private void DisposeComInstance()
{
if (comInstance != null)
{
comInstance.FreeStuff();
comInstance = null;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我有类似于这个设置:
public class Base {
public String getApple() {return "base apple"};
}
public class Extended extends Base{
public String getApple() {return "extended apple"};
}
Run Code Online (Sandbox Code Playgroud)
代码中的其他地方我有这个:
{
Base b = info.getForm();
if (b instanceof Extended){
b = (Extended) b;
}
System.out.println(b.getApple()); // returns "base apple" even when if clause is true why??
}
Run Code Online (Sandbox Code Playgroud)
我该如何做到这一点?
在我的表格中,我有这个代码;
// Add the submit button
$element = $this->addElement('submit', 'submit', array(
'ignore' => true,
'label' => 'Add new material'
));
$element->removeDecorator('label');
Run Code Online (Sandbox Code Playgroud)
但是,表单仍然使用标签之间的label元素进行渲染.
我究竟做错了什么?
有没有办法检查当前用户是否可以写入注册表?更具体地说,如果它不是管理员,可以写入HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER上的策略键.
我尝试使用LookupPrivilegeValue(),但我不认为这是正确的做法.
代码表示赞赏.
似乎在调用函数时重新启动函数中声明的静态变量,如何以重新调用函数的方式使用该函数将重用静态参数?
我在static.php中定义了函数'testStatic'
这是static.php:
<?php
function testStatic()
{
static $staticV = 0;
echo $staticV;
$staticV;
}
?>
Run Code Online (Sandbox Code Playgroud)
我从index.php调用'testStatic'
这是index.php:
<?php include "./static.php";?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3c.org/TR/html4/strict.dtd">
<?php
testStatic();
?>
<html>
.
.
.
<html>
Run Code Online (Sandbox Code Playgroud)
当index.php第一次执行时,testStatic将以'0'回显,但是在下一次执行index.php时,testStatic继续以'0'回显.似乎每当执行index.php时,都会重新启动'testStatic'的静态变量'staticV'.
请指教.index.php
首先是几个定义,以保持清晰.
用户:使用该软件的现场人员
客户:为其用户支付定制版软件的公司.
我们目前有一些应用程序需要根据用户所属的客户端对用户界面进行重大更改.我们目前为每个客户端都有一个单独的构建,但随着客户端数量的增加,管理所有这些单独版本变得更加困难.
我的目标是切换到一个可以根据登录的人动态定制的通用客户端.由于我们的软件无论如何都需要互联网连接(广泛使用web服务)我正在考虑在.NET中使用WebBrowser控件并允许它与计算机上所需的硬件进行交互(通过ObjectForScripting).
然后整个用户界面用HTML/JavaScript编写并存储在服务器上,使得新用户界面的分发和维护变得微不足道.通用客户端不过是一个自定义Web浏览器,它知道如何与我们的硬件设备通信,并且可以通过javascript告知它.
我看到这种方法有很多优点,而且没有太多缺点.我错过了什么?我为什么不走这个方向?
希望标题解释一切,但我想要做的就是在我的网站解决方案中打开一些.php文件,让Visual Studio将它们视为html文件.我不需要突出显示实际的PHJP代码(它只包含).如果不是,HTML语法应该是可解析的?
.net ×2
c# ×2
java ×2
php ×2
asp.net ×1
c ×1
class ×1
dispatch ×1
dispose ×1
field ×1
inheritance ×1
interop ×1
overloading ×1
polymorphism ×1
private ×1
reflection ×1
registry ×1
static ×1
validation ×1
windows ×1
winforms ×1
zend-form ×1