我创建这样的泛型类:
public class Sample<T> where T : class
{
public DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
然后我创建新类:
public class Sample2
{
Sample<Sample2> obj=new Sample<Sample2>();
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用下面的代码Sample在Sample2类中创建类的实例?
Sample<typeof<this>> obj=new Sample<typeof<this>>();
Run Code Online (Sandbox Code Playgroud) 我将图片存储到数据库中,其类型为VARBINARY(MAX),如下所示:

这是我自动生成的模型文件Resim.cs
namespace ResimCek.Models
{
using System;
using System.Collections.Generic;
public partial class Resim
{
public Resim()
{
this.KelimeTuru = new HashSet<KelimeTuru>();
}
public int Id { get; set; }
public int KelimeId { get; set; }
public int SozlukTuruId { get; set; }
public byte[] Adi { get; set; }
public string Aciklama { get; set; }
public virtual ICollection<KelimeTuru> KelimeTuru { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器代码,当我键入“ xxxxxxxx / image / show / 2”时,我得到NullReference异常(但是我有一个id = 2的记录):
public …Run Code Online (Sandbox Code Playgroud) 我有一个服务器,包含一些部分视图文件.我如何从其他服务器加载文件到Html.Partial?喜欢:
@Html.Partial("http://localhost/PartialServer/view/calculator.cshtml");
Run Code Online (Sandbox Code Playgroud)
我可以覆盖部分从网址加载吗?
Asp.net MVC是框架.
我用hmtl视频标签播放视频.在我的localhost视频播放但我发布时.它没有播放.我已经在ASP.NET中创建了项目.我在本地使用这种方法.
http://localhost:41563/files/Just.mp4
Run Code Online (Sandbox Code Playgroud)
当我发布网址给我一个这样的错误:
http://111.111.22.22:41563/files/Just.mp4
Run Code Online (Sandbox Code Playgroud)
404 - 找不到文件或目录.您要查找的资源可能已被删除,名称已更改或暂时不可用.
我该怎么解决这个问题.
我正在尝试为具有参数的方法编写单元测试.我的方法特别是我的自定义对象的TryParse方法.我在Visual Studio 2013中使用.NET 4.5/5.这使我可以使用PrivateType对象完全实现私有/内部和静态对象.似乎逃避我的一件事是如何测试out参数,因为我不能在InvokeStatic方法中使用this关键字.我正在寻找适当的解决方案来测试这种架构设计.
TryParse的使用是TypeConverter进程的一部分,如WebAPI参数绑定帖子中所述.作者:Mike Wilson
public class MyFilter
{
public string Field { get; set; }
//... removed for brevity
internal static bool TryParse(string sourceValue, out MyFilter filter)
{
//... removed for brevity
}
}
public class MyFilterTests
{
[TestMethod]
[TestCategory("TryParse")]
public void TryParseWithTitleOnly()
{
var stringSource = "{field:'DATE.FIELD'}";
MyFilter tryParseOut = null;
var target = new PrivateType(typeof(MyFilter));
var tryParseReturn = target.InvokeStatic("TryParse", stringSource, tryParseOut);
var expectedOut = new MyFilter()
{
Field = "DATE.FIELD"
};
Assert.IsTrue((bool)tryParseReturn);
Assert.AreEqual(expectedOut, tryParseOut);
} …Run Code Online (Sandbox Code Playgroud) 我有一个基本类型B和多个派生子类型,C1:B,C2:B,C3:B等.
我有每个子类型列表,ListL1,ListL2,ListL3.
我有每个子类型的工作函数F1,F2,F3,它们为该子项获取相应的列表L1,L2,L3,并完成基本上相同的功能(仅处理B的属性)但对于相应的类型,C1,C2,C3.
我希望有一个单一的函数,基于一个基类型列表,List"多态"执行子类型的函数独立.
我知道我应该能够通过使用模板说明符修复我的函数声明来将列表传递给我的函数,例如:
public void Fn<T>(List<T> BList) { /* do stuff */ }
Run Code Online (Sandbox Code Playgroud)
我希望我的每个子函数F1,F2,F3都可以调用Base函数
public void F1(List<C1> L1)
{
Fn(L1); // this is the line that fails
}
Run Code Online (Sandbox Code Playgroud)
我尝试过重铸作为基本类型,B
Fn( (List<B>)L1 );
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误,说我无法将类型'System.Collections.Generic.List'转换为'System.Collections.Generic.List',即使C1是从B派生的.
我也试过在Fn名称中输入类型:
Fn<C1>( L1 );
Fn<C1>( (List<B>)L1 );
Run Code Online (Sandbox Code Playgroud)
我发现建议说我应该将我的子列表作为基类列表(对我来说失败),并在我的泛型函数Fn中,检查我传递的列表是否属于特定类型,然后执行特定于此的单独代码类型.除了推荐不适合我的演员之外,这似乎打败了OOP的多态性,仍然在泛型函数中具有子类特定代码.
我希望存在一些真正的抽象/通用方法,不再重复代码,从而将我的子列表视为基本列表.
任何人都可以告诉我如何做到这一点?
谢谢.
我正在学习asp.net mvc.我正在尝试使用visual studio mvc模板进行示例应用程序.登录系统确定谷歌,但我有与Facebook帐户签名的问题.第一步就完成了.我被重定向关联您的Facebook帐户页面.当我输入我的用户名并单击按钮时,我得到的对象引用未设置为打击代码中"info"变量的对象实例.
public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
{
if (User.Identity.IsAuthenticated)
{
return RedirectToAction("Manage");
}
if (ModelState.IsValid)
{
// Get the information about the user from the external login provider
var info = await AuthenticationManager.GetExternalLoginInfoAsync();
if (info == null)
{
return View("ExternalLoginFailure");
}
var user = new ApplicationUser() { UserName = model.UserName };
var result = await UserManager.CreateAsync(user);
if (result.Succeeded)
{
result = await UserManager.AddLoginAsync(user.Id,info.Login);
if (result.Succeeded)
{
await SignInAsync(user, isPersistent: false);
return RedirectToLocal(returnUrl);
}
}
AddErrors(result); …Run Code Online (Sandbox Code Playgroud) 是否有可能在1个语句中写这个(只进行1个db调用?)并且仍能区分"成员不存在"和"成员确实存在但没有狗".
public IEnumerable<Dog> GetDogsOfMember(int id)
{
if (dbContext.Members.Any(i => i.ID == id))
{
return dbContext.Dogs.Where(i => i.Member.ID == id);
}
return null;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个完全通用的CRUD API,通过上下文可以传入任何类类型并通常保存,更新等.
我有一个存储库,可以保存任何模型类型,如下所示:
public class Repository<T> : IRepository<T> where T : class
{
private Context _db = new Context();
public T Add(T newItem)
{
var result = _db.Set<T>().Add((T)newItem);
_db.SaveChanges();
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
这继承自实现所有"add"方法的通用接口:
public interface IRepository<T> where T : class
{
T Add(T newItem);
}
Run Code Online (Sandbox Code Playgroud)
我很难理解为什么我不能将泛型类型传递给存储库接口的新实例?我理想的喜欢这样的东西:
var data = new Data(){
Id = 1
};
IRepository<data.GetType()> repo = new Repository<data.GetType()>();
Run Code Online (Sandbox Code Playgroud)
从而允许我将任何类型传递给方法并在其后面生成正确的接口.
它允许我传递一种具体的类型,但这种类型会使其成为通用的对象.
任何关于这个的想法或解释为什么它不可能将不胜感激 - 谢谢.
我应该使用什么类来保存带有 ef 和 asp.net 核心(使用数据库 postgres)的日期(没有时间)?DateTimeOffset 总是试图节省时间。
public class something
{
[Column(TypeName="date")]
[Required]
public DateTimeOffset StartDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud) c# ×6
asp.net-mvc ×3
generics ×2
.net ×1
asp.net ×1
asp.net-core ×1
covariance ×1
html5 ×1
iis-7.5 ×1
interface ×1
list ×1
oauth ×1
out ×1
polymorphism ×1
postgresql ×1
razor ×1
unit-testing ×1