从基类调用时,GetType()是否会返回派生类型最多的类型?
例:
public abstract class A
{
private Type GetInfo()
{
return System.Attribute.GetCustomAttributes(this.GetType());
}
}
public class B : A
{
//Fields here have some custom attributes added to them
}
Run Code Online (Sandbox Code Playgroud)
或者我应该创建一个抽象方法,派生类必须实现如下所示?
public abstract class A
{
protected abstract Type GetSubType();
private Type GetInfo()
{
return System.Attribute.GetCustomAttributes(GetSubType());
}
}
public class B : A
{
//Fields here have some custom attributes added to them
protected Type GetSubType()
{
return GetType();
}
}
Run Code Online (Sandbox Code Playgroud) 我想制作一个顶行冻结的html表(所以当你垂直向下滚动时,你总能看到它).
有没有一种聪明的方法可以在没有javascript的情况下实现这一目标?
请注意,我不需要冻结左列.
我编写了自定义VirtualFile和VirtualPathProvider实现,这些实现成功获取了部分视图的嵌入式资源.
但是,当我尝试渲染它们时会产生此错误:
The view at '~/Succeed.Web/Succeed.Web.Controls.SImporter._SImporter.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.
渲染局部视图时,在常规视图内部,它看起来如下所示:
Html.RenderPartial("~/Succeed.Web/Succeed.Web.Controls.SImporter._SImporter.cshtml");
Run Code Online (Sandbox Code Playgroud)
是什么让它相信这不是局部观点?
编辑:我为虚拟文件和虚拟文件提供程序实现发布了我的代码,任何人偶然发现这个寻找解决方案来获得该组件的工作.这个问题也适用于基于问题标题的人.
ere是VirtualFile实现以供参考:
public class SVirtualFile : VirtualFile
{
private string m_path;
public SVirtualFile(string virtualPath)
: base(virtualPath)
{
m_path = VirtualPathUtility.ToAppRelative(virtualPath);
}
public override System.IO.Stream Open()
{
var parts = m_path.Split('/');
var assemblyName = parts[1];
var resourceName = parts[2];
assemblyName = Path.Combine(HttpRuntime.BinDirectory, assemblyName);
var assembly = System.Reflection.Assembly.LoadFile(assemblyName + ".dll");
if (assembly != null)
{
return assembly.GetManifestResourceStream(resourceName);
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
的VirtualPathProvider:
public class SVirtualPathProvider : …Run Code Online (Sandbox Code Playgroud) virtualpathprovider partial-views embedded-resource asp.net-mvc-3
我理解这些在aspx页面的标记中有什么意义......但我不知道它们可以用于它们的全部功能,甚至不知道这些特殊指令的名称.
例:
我可以把条件语句,如ifs或开关
我已经看到并使用它们来绑定数据集中的数据
任何输入都非常感谢
目标: 我希望利用子路由器通过应用程序的重要功能区域组织路由的隔离和封装优势.但是,我希望由父路由器视口绑定处理和组合这些路由.即
<div id="parentRouterViewport" data-bind="router: { cacheViews: true }"><div>
到目前为止,我尝试过的所有操作,包括回拨父路由器来委派路由(作为实验)都失败了.让我想知道这是否可能.
为简洁起见,我只是包含了路由的任务批处理代码部分.
shell.js
return {
router: router,
activate: function() {
return router.map([
{ route: 'App*splat', moduleId: 'app/home/viewmodels/index', title: 'Home', nav: true }
]).buildNavigationModel()
.mapUnknownRoutes('app/home/viewmodels/error')
.activate();
}
};
Run Code Online (Sandbox Code Playgroud)
shell.html
<div id="content" data-bind="router: { cacheViews: true }"></div>
Run Code Online (Sandbox Code Playgroud)
index.js(子路由模块)
var childRouter = router.createChildRouter()
.makeRelative({
moduleId: 'app/home/viewmodels',
fromParent: true
}).map([
{ route: 'EligibiltySearch', moduleId: 'eligibilitySearch', title: 'Eligibility Search', nav: true }
]).buildNavigationModel();
return {
router: childRouter
};
});
Run Code Online (Sandbox Code Playgroud)
这种方法的唯一方法是将路由器视口绑定放在相应的index.html视图中.但是,基于我正在尝试设计的CSS布局和页面外观,这不是我所追求的.一旦路线被击中,所有东西都应该被表示为面板并换成不同的面板.目前,这种方法将有两个面板不断打开.请查看下面的照片,了解我的意思.

我只是想从两个列表中删除重复项并将它们组合成一个列表.我还需要能够定义重复的内容.我通过ColumnIndex属性定义副本,如果它们相同,则它们是重复的.这是我采取的方法:
我找到了一个很好的例子,说明如何为代码段中只需要一次的随机场所编写内联比较器.
public class InlineComparer<T> : IEqualityComparer<T>
{
private readonly Func<T, T, bool> getEquals;
private readonly Func<T, int> getHashCode;
public InlineComparer(Func<T, T, bool> equals, Func<T, int> hashCode)
{
getEquals = equals;
getHashCode = hashCode;
}
public bool Equals(T x, T y)
{
return getEquals(x, y);
}
public int GetHashCode(T obj)
{
return getHashCode(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我只有两个列表,并尝试使用比较器对它们进行联合.
var formatIssues = issues.Where(i => i.IsFormatError == true);
var groupIssues = issues.Where(i => i.IsGroupError == true);
var dupComparer = new InlineComparer<Issue>((i1, i2) => i1.ColumnInfo.ColumnIndex …Run Code Online (Sandbox Code Playgroud) 我在div旁边设置了一个img元素.我尝试了几种不同的方法来删除两者之间发生的换行但没有取得任何成功.任何投入将不胜感激!
CSS
#newsMainBody
{
margin-right: auto;
margin-left: auto;
background:#61bc49;
width: 750px;
height: 900px;
font-family:"sans-serif";
text-align:left;
-moz-border-radius: 10px;/*mozilla*/
z-index: 1;
white-space: nowrap;
}
#starOfMonth
{
background: #ffff99;
width: 275px;
height: 300px;
text-align: center;
font-family:"sans-serif";
white-space: normal;
}
Run Code Online (Sandbox Code Playgroud)
HTML
<div id="newsMainBody">
<img src="img/farm.jpg" alt="Farm photo" />
<div id="starOfMonth">
<br />
<font style="font-weight:bold;font-size:medium; color:Purple;">DooLittle Farms Childcare</font><br />
<font style="font-size:small;">"We're Growing Great Kids"</font><br />
<img id="starImg" src="img/gold-star.jpg" alt="Star of the Week" width="200" height="200"/><br />
Our Star Of The Week!
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 这是我自制的序列化类:
public class JsonBuilder
{
private StringBuilder json;
public JsonBuilder()
{
json = new StringBuilder();
}
public JsonBuilder AddObjectType(string className)
{
json.Append("\"" + className + "\": {");
return this;
}
public JsonBuilder Add(string key, string val)
{
json.AppendFormat("\"{0}\":\"{1}\",", key, val);
return this;
}
public JsonBuilder Add(string key, int val)
{
json.AppendFormat("\"{0}\":{1},", key, val);
return this;
}
public string Serialize()
{
return json.ToString().TrimEnd(new char[] { ',' }) + "}";
}
}
Run Code Online (Sandbox Code Playgroud)
这是Web方法
[WebMethod]
public static string GetPersonInfo(string pFirstName, string pLastName)
{ …Run Code Online (Sandbox Code Playgroud) 我正在设计一个自定义属性类.
public class MyAttr: Attribute
{
public ValueRange ValRange { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我试图将此属性分配给相邻类中的属性:
public class Foo
{
[MyAttr(ValRange= new ValueRange())]
public string Prop { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是,编译器抱怨以下内容:
'ValRange'不是有效的命名属性参数,因为它不是有效的属性参数类型
我也尝试将ValueRange类转换为a struct,希望成为值类型可以解决问题.有没有办法解决?
这是目标代码:
public class DlpItem : IEqualityComparer<DlpItem>
{
public string Text { get; set; }
public int Id { get; set; }
public DlpItem(int pId)
{
Text = string.Empty;
Id = pId;
}
public override bool Equals(object obj)
{
return Id == (obj as DlpItem).Id;
}
public bool Equals(DlpItem a, DlpItem b)
{
return a.Id == b.Id;
}
public int GetHashCode(DlpItem item)
{
return Id.GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
我有两个列表如下:
var list1 = new List<DlpItem>();
list1.Add(new DlpItem(1));
list1.Add(new DlpItem(2));
var list2 = new …Run Code Online (Sandbox Code Playgroud) 我正在尝试试验,看看是否有任何聪明的解决方案来创建自定义验证器,可以抽象出来以获得整洁和重用.
在下面的jsfiddle中,我只是将一个简单的父模型放在一起,存储和测量数组(只是一个值和一个日期).在这个例子中,我提出了两个要求.
在父数组中必须至少有一个有效(满足先前条件)测量.
理想情况下,我想要确定有效的验证逻辑,存储在Measurement对象中,如下所述.但是,我非常讨厌的是我必须在父模型中执行的"动手"验证atLeastOne().
Knockout验证将自动验证各个字段的数字和日期但是我必须介入并对阵列规则执行验证.
问题:是否允许我设置KO验证的任何方法检查数组是否满足所需条件,同时仍然将HasValues方法仍存在于测量模型中??? 即我想将搜索"至少一个"的概念抽象为某种可以为我处理工作的自定义验证器,然后告诉这个验证器"嘿,这是我希望你用来验证的函数数组中的每个项目."
提前致谢!
function Model(data)
{
var self = this;
self.Measurements = ko.observableArray();
for(var i = 0; i < data.length; i++)
self.Measurements.push(new Measurement(data[i]));
function hasAtLeastOne(){
var atLeastOne = false;
$.each(self.Measurements(), function(i, item) {
if (item.HasValues()) {
atLeastOne = true;
return;
}
});
return atLeastOne;
}
self.Save = function() {
if (self.canSave() && atLeastOne())
alert('save');
else
alert('arg!');
};
self.errors = ko.validation.group(self);
self.canSave = ko.computed(function() {
return self.errors().length == 0;
}); …Run Code Online (Sandbox Code Playgroud) 只是寻找一些修改典型的策略
mm/dd/yy 00:00:00只是
在绑定到gridview的数据集中返回的日期时间项目的mm/dd/yy
谢谢
该项目位于数据集中,我只是执行以下操作
gridview.DataSource = GetDataSet();
gridview.DataBind();
Run Code Online (Sandbox Code Playgroud)
所以我目前没有与数据集进行大量的互动.我可以通过它来蛮力迭代并做类似的事情
foreach(Table)
foreach(Row)
grab date Col, format and concat to look as desired
Run Code Online (Sandbox Code Playgroud)
但这非常混乱,并且想知道是否有更优雅的解决方案.
c# ×6
asp.net ×3
css ×2
html ×2
knockout.js ×2
linq ×2
.net-3.5 ×1
ajax ×1
durandal-2.0 ×1
iequatable ×1
inheritance ×1
javascript ×1
jquery ×1
polymorphism ×1
winforms ×1